Árvore de páginas

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGAFAT - Facturación
Función:
RutinasNombre Técnico
MATA462AN.PRWGeneración de remitos de venta.
WMSXFUNH.PRWFunciones genéricas WMS
País:Argentina
Ticket:16916313
Requisito/Story/Issue (informe el requisito vinculado):DMICNS-17051


02. SITUACIÓN/REQUISITO

En la generación de remitos de venta automáticos con usuarios simultáneos, cuando es alterado el número de documento del remito, la rutina no realiza el grabado de la información de campos adicionales de manera correcta con el uso del punto de entrada M462FIM.


03. SOLUCIÓN

Se implementa el tratamiento en la función A462ANGera(), rutina MATA462AN.PRW, para verificar si el número de documento (campo F2_DOC) es diferente al valor asignado en el arreglo “aNum”, si es diferente se actualiza el valor en el arreglo (aNum[2]), para mantener la integridad de la información en la ejecución del punto de entrada M462FIM. La solución aplica para los países de Mercado Internacional.


  1. Por medio del módulo Configurador, opción Base de Datos (SIGACFG >> Base de Datos | Diccionario) crear campos de usuario para las tablas SC5/SC6 y SF2/SD2.
  2. Por medio del módulo Configurador, opción Usuarios (SIGACFG >> Usuario | Contraseñas) dar de alta dos usuarios.
  3. Desarrollar y compilar el punto de entrada M462FIM. En el punto de entrada desarrollar el tratamiento para grabar la información en los campos específicos.
  4. Por medio de la rutina Clientes (SIGAFAT >> Actualizaciones | Archivos) incluir dos clientes.
  5. Por medio de la rutina Productos (SIGAFAT >> Actualizaciones | Archivos) incluir 3 productos.
  6. Por medio de la rutina Tipos de Entrada y Salida (SIGAFAT >> Actualizaciones | Archivos) incluir una TES de salida.
  7. Por medio de la rutina Pedidos de Venta (SIGAFAT >> Actualizaciones | Pedidos) realizar la inclusión de 4 pedidos de venta (000001, 000002, 000003 y 000004). Los pedidos de venta deben generar remitos de venta.
  8. Efectuar las aprobaciones correspondientes para permitir la generación de los remitos de venta.
  1. Ingresar al sistema con el usuario 1.
  2. Ingresar a la rutina Generación de Remitos (SIGAFAT >> | Generac. de Remitos), seleccionar los pedidos de venta 000001 y 000002, para la generación de los remitos.
  3. Ingresar al sistema con el usuario 2.
  4. Ingresar a la rutina Generación de Remitos (SIGAFAT >> | Generac. de Remitos), seleccionar los pedidos de venta 000003 y 000004, para la generación de los remitos.
  5. Para el usuario 1, dar clic en la opción “+Gen. Remito” para confirmar la generación del remito de venta.
  6. Para el usuario 2, dar clic en la opción “+Gen. Remito” para confirmar la generación del remito de venta.
  7. La rutina toma inicialmente el mismo número de documento asignado al remito generado por el usuario 1, pero realiza el cambio al grabar el documento.
  8. Una vez generados los documentos, verificar que los campos específicos del pedido de venta sean trasladados de manera correcta al remito de venta.

Ejemplo:


User Function M462FIM()
Local aRem      := ParamIxb[1]
Local _aArea    := GetArea()
Local aAreaSC5  := SC5->(GetArea())
Local aAreaSC6  := SC6->(GetArea())
Local aAreaSD2  := SD2->(GetArea())
Local aAreaSF2  := SF2->(GetArea())
Local nRem      := 0
Local lCpoMNota := (SF2->(ColumnPos("F2_MENNOTA") ) > 0 .And. SC5->(ColumnPos("C5_MENNOTA") ) > 0)
Local lCpoXDes  := (SD2->(ColumnPos("D2_XDESCRI")) > 0 .And. SC6->(ColumnPos("C6_XDESCRI")) > 0)



    SF2->(DbsetOrder(1))
    SD2->(DbsetOrder(3))
    SC5->(DbsetOrder(1))
    SC6->(DbsetOrder(1))

    For nRem := 1 to Len(aRem)    
        If SF2->(DbSeek(xFilial("SF2") + aRem[nRem,2] + aRem[nRem,1]))

            /*Encabezado documento*/
            If SD2->(DbSeek(xFilial("SD2") + SF2->(F2_DOC + F2_SERIE + F2_CLIENTE + F2_LOJA)))
                If SC5->(DbSeek(xFilial("SC5") + SD2->D2_PEDIDO))
                    If RecLock("SF2",.F.)
                        If lCpoMNota
                            If !Empty(SC5->C5_MENNOTA)
                                Replace SF2->F2_MENNOTA with SC5->C5_MENNOTA
                            EndIf
                        EndIf
                    SF2->(MsUnlock())
                    EndIf
                EndIf

                /*Ítems documento*/
                Do While SD2->(!EOF()) .And. SD2->(D2_FILIAL + D2_DOC + D2_SERIE + D2_CLIENTE + D2_LOJA) == xFilial("SD2") + SF2->(F2_DOC + F2_SERIE + F2_CLIENTE + F2_LOJA)
                    If SC6->(DbSeek(xFilial("SC6")+SD2->D2_PEDIDO+SD2->D2_ITEMPV))
                        If RecLock("SD2",.F.)
                            If lCpoXDes
                                Replace SD2->D2_XDESCRI with SC6->C6_XDESCRI
                            Endif
                            SD2->(MsUnlock())
                        Endif
                    Endif  
                    SD2->(DbSkip())
                EndDo
            EndIf
           
        Endif

    Next nRem

    SF2->(RestArea(aAreaSF2))
    SD2->(RestArea(aAreaSD2))
    SC5->(RestArea(aAreaSC5))
    SC6->(RestArea(aAreaSC6))
    RestArea(_aArea)

Return {aRem}


04. INFORMACIÓN ADICIONAL



¡IMPORTANTE!

La solución unicamente aplica para los remitos de venta generados después de la aplicación del paquete de actualización (patch).


05. ASUNTOS RELACIONADOS