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 |
---|
id | 1536020054489_-1859990472 |
---|
| 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. Sintaxe:MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete ( [ PARAMIXB1 ] [ PARAMIXB2 ] ) --> nil ObservaçõesAs 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:
Bloco de código |
---|
| // *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 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
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Carrega ate 3 documentos de origem - Fornecedor 000001 |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SF1")
dbSetOrder(1)
MsSeek(xFilial("SF1"))
While
While !EOF()
IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="001 01COM00301")
if nX<3
cFilSF1 := xFilial("SF1")
nTamFilial := Len(cFilSF1)
aadd(aItens
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,{"",1}) //Tipo da nota de origem: 1=Normal;2=Devol/Benef
aadd(aCabec,{"",dDataBase-901}) //Data Inicial
1=Aglutina;2=Nao aglutina
aadd(aCabec,{"F1_EST",""})
aadd(aCabec,{"",dDataBase1000}) //DataValor Finaldo conhecimento
aadd(aCabec,{"F1_FORMUL",2}) // Utiliza Formulario proprio //2-Inclusao;1=Exclusao
? 1-Nao,2-Sim
aadd(aCabec,{"F1_DOC","001 "cNumDoc}) //Fornecedor..Numero doda documentoNF de OrigemConhecimento de
Frete
aadd(aCabec,{"F1_SERIE","01"cSerie}) //Loja de origem
aadd(aCabec,{"F1_FORNECE",1cCodFor}) //Tipo da nota de origem: 1=Normal;2=Devol/Benef
aadd(aCabec,{"F1_LOJA",cLojFor})
aadd(aCabec,{"",2"001"}) //1=Aglutina;2=Nao aglutina
//TES
aadd(aCabec,{"F1_ESTBASERET",""0})
aadd(aCabec,{"F1_ICMRET",10000}) //Valor do conhecimento
aadd(aCabec,{"F1_COND","001"})
aadd(aCabec,{"F1_FORMULEMISSAO",1dDataBase})
aadd(aCabec,{"F1_DOCESPECIE","000043NF"})
//..Numero da NF-- Rateio de ConhecimentoCentro 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",""})
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' ,50 ,"000000000",,,,"SDE",,,,.F.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 },{'02',50,"000001",,,,"SDE",,,,.F.}}}}
MATA116(aCabec,aItens,,,aRatcc)
EndIf
If lMsErroAuto
MostraErro()
Alert("Erro!")
Else
Alert("Ok!")
Endif
EndIf
EndIf
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:= 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:
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 |
|
|
| PARAMIXB4 | Array of Record | Conteú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ção | Indica 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. |
|