Árvore de páginas

Versões comparadas

Chave

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

...

Contendo as notas fiscais que entrarão no rateio da Nota Fiscal de Conhecimento de Frete
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” FOB - o transporte do fornecedor até o cliente não está incluso no preço ou “CIF” 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”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 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).

Exemplo1:


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

Exemplos
#INCLUDE "RWMAKE.CH"

#INCLUDE "TBICONN.CH" 
// BIBLIOTECA #include "

#INCLUDE "Protheus.ch"

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


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

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

//-- Verifica informações 
|//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ//-- Verifica informacoes de produtodbSelectArea(
de produto
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"
1
001"))
 
lOk := .F. 

ConOut("Cadastrar produto: 
1
001")
EndIf
//-- Verifica 
informacoes
informações da 
TESdbSelectArea
TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"
100
001"))
 
lOk := .F. 

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

ConOut("Cadastrar 
condicao
condição de pagamento: 
1
001")
EndIf
//-- Verifica 
fornecedordbSelectArea
fornecedor
dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"
1
001"))
 
lOk := .F. 

ConOut("Cadastrar fornecedor: 
1
001")
EndIfIf lOk

EndIf
If lOk


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 

//| Carrega ate 3 documentos de origem - Fornecedor 
000001
000001              
|
        
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
      
dbSelectArea("SF1")
                       | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 

dbSelectArea("SF1") 
dbSetOrder(1) 

MsSeek(xFilial("SF1")) 

While !EOF() 

IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="
1
COM00301") 
if nX<3 
cFilSF1 
01
:= xFilial("SF1")
nTamFilial := 
if nX<3
Len(cFilSF1) 
aadd(aItens,{{"PRIMARYKEY",AllTrim(SubStr(&(IndexKey()),
3
nTamFilial + 1))}}) //Tratamento para Gestao Empresas
else 
exit 
else exit Endif nX++ EndIf dbskip() EndDo IF nX >0 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Inclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Endif 
nX++ 
EndIf 
dbskip() 
EndDo 

IF nX >0

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
//| Teste de Inclusão                                                                                                                      | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
aadd(aCabec,{"",
dDataBase-90
Ctod("01/01/2015")}) 
//Data Inicial 

aadd(aCabec,{"",
dDataBase
Ctod("01/12/2015")})
 
//Data Final 

aadd(aCabec,{"",2}) 
//2-Inclusao;1=Exclusao
//2-Inclusao;1=Exclusao 
aadd(aCabec,{"",
"1 "
cCodFor}) 
//Fornecedor do documento de Origem 
aadd(aCabec

aadd(aCabec,{"",
"01"
cLojFor})
 
//Loja de origem 

aadd(aCabec,{"",1})
 
//Tipo da nota de origem: 1=Normal;2=Devol/Benef 
aadd(aCabec

aadd(aCabec,{"",
2
1})
 
//1=Aglutina;2=Nao aglutina 

aadd(aCabec,{"F1_EST",""}) 

aadd(aCabec,{"",1000}) 
//Valor do conhecimento 
aadd

aadd(aCabec,{"F1_FORMUL",
1
2}) // Utiliza Formulario proprio ? 
1-Nao,2-Sim 
aadd(aCabec,{"F1_DOC",
"000043"
cNumDoc}) 
//..Numero da NF de Conhecimento de Frete 

aadd(aCabec,{"F1_SERIE",
"CF "
cSerie}) 

aadd(aCabec,{"F1_FORNECE",
"1 "})
cCodFor}) 
aadd(aCabec,{"F1_LOJA",
"01"
cLojFor}) 

aadd(aCabec,{"","
100
001"}) 
//TES 

aadd(aCabec,{"F1_BASERET",0}) 

aadd(aCabec,{"F1_ICMRET",0}) 

aadd(aCabec,{"F1_COND","
1
001"}) 

aadd(aCabec,{"F1_EMISSAO",dDataBase}) 

aadd(aCabec,{"F1_ESPECIE","NF"}) 


//-- Rateio de Centro de Custos
AAdd 
aadd
(
aCabec
aCCItem, {"
E2
DE_
NATUREZ
ITEM","01"})
AAdd 
aadd(acabec,{"F1_DESPESA",10}) aadd(acabec,{"F1_DESCONTO",20}) If Len(aItens)>0 MATA116(aCabec,aItens) EndIf If lMsErroAuto MostraErro() Alert("Erro!") Else Alert
(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 EndIfReturn(.T.)
Parâmetros:
NomeTipoDescriçãoDefaultObrigatórioReferênciaPARAMIXB1Array of RecordContendo os valores para a geração da nota fiscal de conhecimento de FretePARAMIXB2Array of Record


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


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.