Función: MATA116 - Programa de digitación de factura de conocimiento de flete


Oops, it seems that you need to place a table or a macro generating a table within the Table Filter macro.

The table is being loaded. Please wait for a bit ...

Alcances:

Microsiga Protheus 11 , Protheus 10

Versiones:

Protheus 10

Compatible países:

Todos

Sistemas operativos:

Todos

Compatible a las bases de datos:

Todos

Nivel de acceso:

Nivel 1 (Acceso Clientes)

Idiomas:

Portugués (Brasil)


Descripción:

Esta rutina facilita la digitación de los conocimientos de flete.

Programa fuente:

MATA116.PRW

Sintaxis:

MATA116 - Programa de digitación de factura de conocimiento de flete ( [ PARAMIXB1 ] [ PARAMIXB2 ] ) --> nil

Devolución:

nil

(nulo)

Observaciones

Las condiciones más frecuentes son para FOB - el transporte del proveedor hasta el cliente no está incluido en el precio o CIF -, solo está incluido el valor de la entrega.

La factura de conocimiento de flete se emite cuando el transporte lo realiza una transportadora y es del tipo FOB. Se efectúan diversas entregas y, al final de un período definido por la empresa, se emite una factura para que se paguen los servicios de la transportadora.
De esta manera, para poder generar la factura, es necesario que la transportadora esté registrada como un proveedor, para que se genere un título por pagar, si la empresa tiene el módulo financiero integrado.

IMPORTANTE:  El siguiente ejemplo se debe adaptar según la necesidad del cliente, con informaciones válidas como: Proveedor, TES, Producto, Condición de pago, Valor de la Factura de conocimiento de flete y las Facturas que participan del prorrateo de flete.

Ejemplo:


// *Inclusión de conocimiento considerando Tipo Factura Normal**

#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH" 
#INCLUDE "Protheus.ch"

User Function rmata116()
Local cCodFor := "COM003"
Local cLojFor := "01"
Local cNumDoc := "COM116001"
Local cSerie := "1"
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aRatcc := {}
Local aRateio := {}
Local aCCItem := {}
Local nX := 0
Local nY := 0
Local nTamFilial := 0
Local lOk := .T.
Local cFilSF1 := ""
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.


//------------------------//| Apertura del entorno |//------------------------ 
//PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SB1","SD1","SF1"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificación del entorno para prueba |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

//-- Verifica informaciones del producto
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"001")) 
lOk := .F. 
ConOut("Registrar producto: 001")
EndIf
//-- Verifica informaciones del TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001")) 
lOk := .F. 
ConOut("Registrar TES: 001")
EndIf
//-- Verifica informaciones de la condición de pago
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001")) 
lOk := .F. 
ConOut("Registrar condición de pago: 001")
EndIf
//-- Verifica proveedor
dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"001")) 
lOk := .F. 
ConOut("Registrar proveedor: 001")
EndIf
If lOk


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
//| Carga hasta 3 documentos de origen - Proveedor 000001                                                   | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 

dbSelectArea("SF1") 
dbSetOrder(1) 
MsSeek(xFilial("SF1")) 
While !EOF() 
IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="COM00301") 
if nX<3 
cFilSF1 := xFilial("SF1")
nTamFilial := Len(cFilSF1) 
aadd(aItens,{{"PRIMARYKEY",AllTrim(SubStr(&(IndexKey()),nTamFilial + 1))}}) //Tratamiento para Gestión de Empresas
else 
exit 
Endif 
nX++ 
EndIf 
dbskip() 
EndDo 

IF nX >0

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
//| Prueba de inclusión                                                                                                                      | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
aadd(aCabec,{"",Ctod("01/01/2015")}) //Data Inicial 
aadd(aCabec,{"",Ctod("01/12/2015")}) //Data Final 
aadd(aCabec,{"",2}) //2-Inclusión;1=Eliminación 
aadd(aCabec,{"",cCodFor}) //Proveedor del documento de origen 
aadd(aCabec,{"",cLojFor}) //Tienda de origen 
aadd(aCabec,{"",1}) //Tipo de la factura de origen: 1=Normal;2=Devol/Benef 
aadd(aCabec,{"",1}) //1=Agrupa;2=No agrupa 
aadd(aCabec,{"F1_EST",""}) 
aadd(aCabec,{"",1000}) //Valor del conocimiento 
aadd(aCabec,{"F1_FORMUL",2}) // Utiliza Formulario propio ? 1-No,2-Sí 
aadd(aCabec,{"F1_DOC",cNumDoc}) //..Numero de la factura de conocimiento de flete 
aadd(aCabec,{"F1_SERIE",cSerie}) 
aadd(aCabec,{"F1_FORNECE",cCodFor}) 
aadd(aCabec,{"F1_LOJA",cLojFor}) 
aadd(aCabec,{"","001"}) //TES 
aadd(aCabec,{"F1_BASERET",0}) 
aadd(aCabec,{"F1_ICMRET",0}) 
aadd(aCabec,{"F1_COND","001"}) 
aadd(aCabec,{"F1_EMISSAO",dDataBase}) 
aadd(aCabec,{"F1_ESPECIE","NF"}) 


//-- Prorrateo de centro de costos
AAdd (aCCItem, {"DE_ITEM","01"})
AAdd (aCCItem, {"DE_PERC",45})
AAdd (aCCItem, {"DE_CC","COM002"})
AAdd (aRatCC, aCCItem)

aCCItem := {}
AAdd (aCCItem, {"DE_ITEM","02"})
AAdd (aCCItem, {"DE_PERC",55})
AAdd (aCCItem, {"DE_CC","COM003"})
AAdd (aRatCC, aCCItem)

AAdd (aRateio, {"0001",aRatCC})

MATA116(aCabec,aItens,,,aRateio) 

If lMsErroAuto 
MostraErro() 
Conout("Erro!") 
Else 
Conout("Ok!") 
Endif 
EndIf 

EndIf

RESET ENVIRONMENT

Return(.T.)

****************************************************************************

// Inclusión de conocimiento considerando Tipo Fact Devol/Benef 

#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "Protheus.ch"

User Function mt116Dev()
Local cCliFor	:= "COM002"
Local cLclifor	:= "01"
Local cNumDoc	:= "COM116002"
Local cSerie	:= "1"
Local cTransp	:= "COM003"
Local cLtransp	:= "01"
Local cOrigem	:= "COM000013"
Local cSerie	:= "1  "
Local cSerieId
Local cEspecie	:= "CTR"
Local cTipo		:= "C"
Local nX            := 0
Local nY            := 0
Local aItens        := {}
Local aLinha        := {}
Local aCabec        := {}
Local nTamFilial       := 0
Local lOk           := .T.
Local cFilSF1      := ""
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
    
//------------------------//| Abertura do ambiente |//------------------------
//PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SB1","SD1","SF1"
  
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificación del entorno para prueba                           |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
  
//-- Verifica informações de produto
dbSelectArea("SB1")
dbSetOrder(1) 
If !SB1->(MsSeek(xFilial("SB1")+"X123456")) 
    lOk := .F.   
    ConOut("Registrar producto: 001")
EndIf
//-- Verifica informaciones del TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001")) 
    lOk := .F.   
    ConOut("Registrar TES: 001")
EndIf
//-- Verifica informaciones de la condición de pago
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001")) 
    lOk := .F.   
    ConOut("Registrar condición de pago: 001")
EndIf
//-- Verifica proveedor
dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"000002")) 
    lOk := .F.   
    ConOut("Registrar proveedor: 001")
EndIf
If lOk            
            
    //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿   
    //| Carga hasta 3 documentos de origen - Proveedor 000001       |   
    //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ   
     
    dbSelectArea("SF1")   
    dbSetOrder(1)   
    MsSeek(xFilial("SF1"))   
    While !EOF()       
        IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="COM00201")         
            if nX<3             
                cFilSF1      := xFilial("SF1")
                nTamFilial  := Len(cFilSF1)            
                aadd(aItens,{{"PRIMARYKEY",AllTrim(SubStr(&(IndexKey()),nTamFilial + 1))}}) //Tratamiento para Gestión de Empresas
            else               
                exit           
            Endif            
            nX++       
        EndIf     
       dbskip()   
    EndDo      

       
    IF nX >0

        
        //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿     
        //| Prueba de inclusión                                            |     
        //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ    
        aadd(aCabec,{"",Ctod("01/01/2015")})       //Fecha Inicial       
        aadd(aCabec,{"",Ctod("01/12/2015")})          //Fecha Final       
        aadd(aCabec,{"",2})                  //2-Inclusión;1=Eliminación       
        aadd(aCabec,{"",cCliFor})           //Proveedor del documento de Origen         
        aadd(aCabec,{"",cLclifor})               //Tienda de origen       
        aadd(aCabec,{"",2})                  //Tipo de la factura de origen: 1=Normal;2=Devol/Benef       
        aadd(aCabec,{"",1})                  //1=Agrupa;2=No agrupa       
        aadd(aCabec,{"F1_EST",""})       
        aadd(aCabec,{"",150})               //Valor del conocimiento       
        aadd(aCabec,{"F1_FORMUL",1})        // Utiliza Formulario propio ? 1-No,2-Sí
        aadd(aCabec,{"F1_DOC",cNumDoc})    //..Numero de la factura de conocimiento de flete    
        aadd(aCabec,{"F1_SERIE",cSerie})       
        aadd(aCabec,{"F1_FORNECE",cTransp})       
        aadd(aCabec,{"F1_LOJA",cLtransp})       
        aadd(aCabec,{"","001"})              //TES       
        aadd(aCabec,{"F1_BASERET",0})       
        aadd(aCabec,{"F1_ICMRET",0})       
        aadd(aCabec,{"F1_COND","001"})       
        aadd(aCabec,{"F1_EMISSAO",dDataBase})       
        aadd(aCabec,{"F1_ESPECIE",cEspecie})  
        //aadd(aItens,{"PRIMARYKEY",cOrigem})


            MSExecAuto({|x,y| Mata116(x,y)},aCabec,aItens)
            
            If lMsErroAuto         
                MostraErro()           
                Conout("Erro!")     
            Else           
                Conout("Ok!")       
            Endif   
   EndIf   
     
EndIf

RESET ENVIRONMENT

Return(.T.)

Parámetros:


Nombre

Tipo

Descripción

Estándar

Obligatorio

Referencia

PARAMIXB1

Array of Record

Contiene los valores para generar la factura de conocimiento de flete.




PARAMIXB2

Array of Record

Contiene las facturas que entrarán en el prorrateo de la factura de conocimiento de flete.




PARAMIXB3

Array of Record

Contiene las informaciones para prorrateo por centro de costo




PARAMIXB4Array of RecordConteúdo de gravação das naturezas de rendimentos e dados de suspensão




Parámetros SX6:

Nombre de la variable

MV_AZFRETE

Contenido estándar

.T.

Descripción

Indica si en el conocimiento de flete, se debe dejar en cero la alícuota del ítem que tenga alícuota en cero en la factura de origen. 

Comportamiento

Si la alícuota de la factura de origen se deja en cero, el sistema no calculará la alícuota si el parámetro está habilitado. Esta es la configuración estándar. 

Para que el sistema calcule la alícuota en esta situación, se debe inhabilitar este parámetro.