Árvore de páginas

Versões comparadas

Chave

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

...

Contendo as informações para rateio por centro de custo
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.

ExemploExemplo1:


language
Bloco de código
delphi
themeMidnight
linenumberstrue
// *Inclusão de Conhecimento considerando Tipo NF Normal*

#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 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 
cFilSF1     	
			if nX<3            	
				cFilSF1 	 := xFilial:= 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     	
			    exit            
			Endif             
			nX++        
		EndIf      
	   dbskip()    
	EndDo     	
	
	IF nX >0
			
		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿		
		//| Teste de Inclusao                                            |	    
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ	   
		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,{"",dDataBase-901}) //Tipo da nota de   //Data Inicial        
		origem: 1=Normal;2=Devol/Benef 
aadd(aCabec,{"",dDataBase1})          //Data Final        
		1=Aglutina;2=Nao aglutina 
aadd(aCabec,{"F1_EST",2""})                  //2-Inclusao;1=Exclusao        
		
aadd(aCabec,{"",1000}) //Valor do conhecimento 
aadd(aCabec,{"F1_FORMUL","001   "2}) // Utiliza Formulario proprio      ? 1-Nao,2-Sim 
aadd(aCabec,{"F1_DOC",cNumDoc}) //Fornecedor..Numero doda documentoNF de OrigemConhecimento         de Frete 
		aadd(aCabec,{"F1_SERIE","01"})               //Loja de origem        
		cSerie}) 
aadd(aCabec,{"F1_FORNECE",cCodFor}) 
aadd(aCabec,{"F1_LOJA",cLojFor}) 
aadd(aCabec,{"","001"}) //TES 
aadd(aCabec,{"F1_BASERET",10})                  //Tipo da nota de origem: 1=Normal;2=Devol/Benef        
		aadd
aadd(aCabec,{"F1_ICMRET",20})                  //1=Aglutina;2=Nao aglutina        
		aadd(aCabec,
aadd(aCabec,{"F1_ESTCOND","001"})        
		aadd(aCabec,{"F1_EMISSAO",1000dDataBase})               //Valor do conhecimento        
		aadd(
aadd(aCabec,{"F1_FORMULESPECIE",1"NF"}) 


//-- Rateio de Centro de   
		aadd(aCabec,{"F1_DOCCustos
AAdd (aCCItem, {"DE_ITEM","00004301"})
AAdd    //..Numero da NF de Conhecimento de Frete        
		aadd(aCabec,{"F1_SERIE","CF "})        
		aadd(aCabec,{"F1_FORNECE","001   "})        
		aadd(aCabec,{"F1_LOJA","01"})        
		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",""})        
		aadd(acabec,{"F1_DESPESA",10})(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})


            
		aadd(acabec,{"F1_DESCONT",20})MSExecAuto({|x,y| Mata116(x,y)},aCabec,aItens)
            
          	  If lMsErroAuto 
	
		If Len(aItens)>0			
					    //item da nota 
   //Item do Rateio , Perc. Rate ,Cent.de Cus,,,, Alias,Linha Deletada,   Item 02MostraErro() do Rateio.
			aRatcc := {{"0001"        
  ,{{'01'              ,50Conout("Erro!")     
     ,"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
Return(.T.)   

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferênciaPARAMIXB1Array 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 Record
     
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


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




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.