Árvore de páginas

Função: MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete


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 ...

Abrangências:Microsiga Protheus 11 , Protheus 10
Versões:Protheus 10
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível às Bases de Dados:Todos
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Português (Brasil)


Descrição:
Esta rotina facilita a digitação dos conhecimentos de frete.
Programa Fonte:
MATA116.PRW
Sintaxe:

MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete ( [ PARAMIXB1 ] [ PARAMIXB2 ] ) --> nil

Retorno:
nil
    (nulo)
Observações

As condições mais frequentes são para FOB - o transporte do fornecedor até o cliente não está incluso no preço ou CIF -, apenas está incluso o valor da entrega.

A nota de conhecimento de frete é emitida quando o transporte é feito por uma transportadora do tipo FOB. São efetuadas diversas entregas
 e ao final de um período definido pela empresa, é emitida uma nota fiscal para que sejam pagos os serviços da transportadora.
Assim, para que a geração da nota fiscal seja possível, é necessário que a transportadora seja cadastrada como um fornecedor para que um título a pagar seja gerado, caso a empresa possua o Financeiro Integrado.

IMPORTANTE:  O exemplo abaixo deve ser adaptado conforme a necessidade do cliente, com informações válidas como: Fornecedor, TES, Produto, Condição de Pagamento, Valor da NF de Conhecimento de Frete e as Notas Fiscais que participam do rateio de frete.

Exemplo:


// *Inclusão de Conhecimento considerando Tipo NF 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.


//------------------------//| Abertura do ambiente |//------------------------ 
//PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SB1","SD1","SF1"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificação do ambiente para teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

//-- Verifica informações de produto
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"001")) 
lOk := .F. 
ConOut("Cadastrar produto: 001")
EndIf
//-- Verifica informações da TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001")) 
lOk := .F. 
ConOut("Cadastrar TES: 001")
EndIf
//-- Verifica informações da condição de pagamento
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001")) 
lOk := .F. 
ConOut("Cadastrar condição de pagamento: 001")
EndIf
//-- Verifica fornecedor
dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"001")) 
lOk := .F. 
ConOut("Cadastrar fornecedor: 001")
EndIf
If lOk


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
//| Carrega ate 3 documentos de origem - Fornecedor 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))}}) //Tratamento para Gestao Empresas
else 
exit 
Endif 
nX++ 
EndIf 
dbskip() 
EndDo 

IF nX >0

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
//| Teste de Inclusão                                                                                                                      | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
aadd(aCabec,{"",Ctod("01/01/2015")}) //Data Inicial 
aadd(aCabec,{"",Ctod("01/12/2015")}) //Data Final 
aadd(aCabec,{"",2}) //2-Inclusao;1=Exclusao 
aadd(aCabec,{"",cCodFor}) //Fornecedor do documento de Origem 
aadd(aCabec,{"",cLojFor}) //Loja de origem 
aadd(aCabec,{"",1}) //Tipo da nota de origem: 1=Normal;2=Devol/Benef 
aadd(aCabec,{"",1}) //1=Aglutina;2=Nao aglutina 
aadd(aCabec,{"F1_EST",""}) 
aadd(aCabec,{"",1000}) //Valor do conhecimento 
aadd(aCabec,{"F1_FORMUL",2}) // Utiliza Formulario proprio ? 1-Nao,2-Sim 
aadd(aCabec,{"F1_DOC",cNumDoc}) //..Numero da NF de Conhecimento de Frete 
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"}) 


//-- Rateio de Centro de Custos
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.)

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

// Inclusão de Conhecimento considerando Tipo NF 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"
  
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificação do ambiente para teste                           |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
  
//-- Verifica informações de produto
dbSelectArea("SB1")
dbSetOrder(1) 
If !SB1->(MsSeek(xFilial("SB1")+"X123456")) 
    lOk := .F.   
    ConOut("Cadastrar produto: 001")
EndIf
//-- Verifica informacões da TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001")) 
    lOk := .F.   
    ConOut("Cadastrar TES: 001")
EndIf
//-- Verifica informações da condição de pagamento
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001")) 
    lOk := .F.   
    ConOut("Cadastrar condição de pagamento: 001")
EndIf
//-- Verifica fornecedor
dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"000002")) 
    lOk := .F.   
    ConOut("Cadastrar fornecedor: 001")
EndIf
If lOk            
            
    //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿   
    //| Carrega ate 3 documentos de origem - Fornecedor 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))}}) //Tratamento para Gestao Empresas
            else               
                exit           
            Endif            
            nX++       
        EndIf     
       dbskip()   
    EndDo      

       
    IF nX >0

        
        //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿     
        //| Teste de Inclusão                                            |     
        //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ    
        aadd(aCabec,{"",Ctod("01/01/2015")})       //Data Inicial       
        aadd(aCabec,{"",Ctod("01/12/2015")})          //Data Final       
        aadd(aCabec,{"",2})                  //2-Inclusao;1=Exclusao       
        aadd(aCabec,{"",cCliFor})           //Fornecedor do documento de Origem         
        aadd(aCabec,{"",cLclifor})               //Loja de origem       
        aadd(aCabec,{"",2})                  //Tipo da nota de origem: 1=Normal;2=Devol/Benef       
        aadd(aCabec,{"",1})                  //1=Aglutina;2=Nao aglutina       
        aadd(aCabec,{"F1_EST",""})       
        aadd(aCabec,{"",150})               //Valor do conhecimento       
        aadd(aCabec,{"F1_FORMUL",1})        // Utiliza Formulario proprio ? 1-Nao,2-Sim
        aadd(aCabec,{"F1_DOC",cNumDoc})    //..Numero da NF de Conhecimento de Frete    
        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:


NomeTipoDescriçãoDefaultObrigatórioReferência
PARAMIXB1Array of RecordContendo os valores para a geração da nota fiscal de conhecimento de Frete.


PARAMIXB2Array of RecordContendo as notas fiscais que entrarão no rateio da Nota Fiscal de Conhecimento de Frete.


PARAMIXB3Array of RecordContendo as informações para rateio por centro de custo




Parâmetros SX6:

Nome da Variável

MV_AZFRETE

Conteúdo Padrão.T.
DescriçãoIndica se no conhecimento de frete, deve zerar a alíquota do item que tiver alíquota zerada na Nota Fiscal de origem. 
Comportamento

Caso a alíquota da NF de origem seja zerada, o sistema não calculará a alíquota no caso do parâmetro estar habilitado. Essa é a configuração padrão. 

Para que o sistema calcule a alíquota nessa situação, esse parâmetro deve ser desabilitado.