Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Portuguese

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

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


Table Filter
id1536020054489_-1859990472
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:


Bloco de código
linenumberstrue
#INCLUDE "RWMAKE.CH" 
#INCLUDE "TBICONN.CH"      
// BIBLIOTECA 
#include#INCLUDE "Protheus.ch"
User Function rmata116()
Local aCabeccCodFor := "COM003"
Local cLojFor := "01"
Local  cNumDoc := {}"COM116001"
Local aItenscSerie := "1"
Local aCabec := {}
Local  aItens := {}
Local aLinha       := {}
Local aRatcc := {}
Local aRateio := {}
Local aCCItem aRatcc		:= {}
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"
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| VerificacaoVerificação do ambiente para teste                           |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 
//-- Verifica informacoesinformações de produto
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"001"))	 
	lOk := .F.    
	ConOut("Cadastrar produto: 001")
EndIf
//-- Verifica informacoesinformações da TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001"))	 
	lOk := .F.    
	ConOut("Cadastrar TES: 001")
EndIf
//-- Verifica informacoesinformações da condicaocondição de pagamento
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001"))	 
	lOk := .F.    
	ConOut("Cadastrar condicaocondiçã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  000001              |        
	//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ       
	
	                     | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 

dbSelectArea("SF1")    
	dbSetOrder(1)    
	MsSeek(xFilial("SF1"))    
	While !EOF()     	
		IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="001   01COM00301") 
if nX<3      	
			if nX<3            	
				cFilSF1 	 :
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
// Inclusão de 	
			Conhecimento considerando Tipo NF exit            
			Endif             
			nX++        
		EndIf      
	   dbskip()    
	EndDo     	
	
	IF nX >0
			
		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿		
		//| Teste de Inclusao                                            |	    
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ	   
		Nornal
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
//| Teste de Inclusao                                                                                                                      | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
aadd(aCabec,{"",Ctod("01/01/2015")}) //Data Inicial 
aadd(aCabec,{"",dDataBase-90})      Ctod("01/12/2015")}) //Data Inicial        
		Final 
aadd(aCabec,{"",dDataBase2})          //Data Final        
		//2-Inclusao;1=Exclusao 
aadd(aCabec,{"",2cCodFor}) //Fornecedor do documento de              //2-Inclusao;1=Exclusao        
		Origem 
aadd(aCabec,{"",cLojFor}) //Loja de origem 
aadd(aCabec,{"","001   "1}) //Tipo da nota de       //Fornecedor do documento de Origem          
		origem: 1=Normal;2=Devol/Benef 
aadd(aCabec,{"",1}) //1=Aglutina;2=Nao aglutina 
aadd(aCabec,{"F1_EST","01"})              
aadd(aCabec,{"",1000}) //LojaValor dedo origem        
		conhecimento 
aadd(aCabec,{"F1_FORMUL",2}) 
aadd(aCabec,{"F1_DOC",1cNumDoc}) //..Numero da NF de Conhecimento de            //Tipo da nota de origem: 1=Normal;2=Devol/Benef        
		Frete 
aadd(aCabec,{"F1_SERIE",cSerie}) 
aadd(aCabec,{"F1_FORNECE",2cCodFor})                  //1=Aglutina;2=Nao aglutina        
		
aadd(aCabec,{"F1_ESTLOJA",""cLojFor})        
		aadd(aCabec,{"",1000"001"})               //Valor do conhecimento        
		//TES 
aadd(aCabec,{"F1_BASERET",0}) 
aadd(aCabec,{"F1_FORMULICMRET",10})        
		aadd(aCabec,{"F1_DOCCOND","000043001"})    //..Numero da NF de Conhecimento de Frete        
		
aadd(aCabec,{"F1_SERIEEMISSAO","CF "dDataBase})        
		aadd(aCabec,{"F1_FORNECEESPECIE","001   NF"}) 


//-- Rateio de Centro de   
		aadd(aCabec,{"F1_LOJACustos
AAdd (aCCItem, {"DE_ITEM","01"})
AAdd        
		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"})        
		aadd(aCabec,{"E2_NATUREZ",""})        
	
		If Len(aItens)>0			
					    //item da nota    //Item do Rateio , Perc. Rate ,Cent.de Cus,,,, Alias,Linha Deletada,   Item 02 do Rateio.
			aRatcc := {{"0001"        ,{{'01'(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.)

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

#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


// Inclusão de Conhecimento considerando Tipo NF Devol/Benef 
             
        //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿     
        //| 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-Sim,2-Nao	
        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!")   ,50  
        ,"000000000",,,,"SDE",,,,.F.    Else        },{'02',50,"000001",,,,"SDE",,,,.F.}}}} 
			MATA116(aCabec,aItens,,,aRatcc)   
		EndIf   
       	
			If lMsErroAuto			
				MostraErro()			
				Alert("Erro!")		
			Else			
				Alert         Conout("Ok!")	       
			            Endif   
 
	EndIf  EndIf   
     
	
EndIf
EndIf

RESET ENVIRONMENT

Return(.T.)   

Parâmetros:



Nome

Tipo

Descrição

Default

Obrigatório

Referência

PARAMIXB1

Array of Record

Contendo os valores para a geração da nota fiscal de conhecimento de Frete.










PARAMIXB2

Array of Record

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










PARAMIXB3

Array of Record

Contendo as informações para rateio por centro de custo