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) |
Esta rotina facilita a digitação dos conhecimentos de frete.
MATA116.PRW
MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete ( [ PARAMIXB1 ] [ PARAMIXB2 ] ) --> nil
- (nulo)
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.
// *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:
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 |
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. |