fonte

Download fonte

If you can't read please download the document

Upload: guilherme-mendes

Post on 28-Oct-2015

757 views

Category:

Documents


82 download

TRANSCRIPT

#INCLUDE "PROTHEUS.CH"#INCLUDE "COLORS.CH"#INCLUDE "TBICONN.CH" /*/Programa XmlNFeSef Autor Eduardo Riera Data 13.02.2007Descrio Rdmake de exemplo para geracao da Nota Fiscal Eletronica do SEFAZ - Versao T01.00 / 2.00 Retorno String da Nota Fiscal Eletronica ParametrosExpC1: Tipo da NF [0] Entrada [1] Saida ExpC2: Serie da NF ExpC3: Numero da nota fiscal ExpC4: Codigo do cliente ou fornecedor ExpC5: Loja do cliente ou fornecedor DATA Programador Manutencao efetuada /*/User Function XmlNfeSef(cTipo,cSerie,cNota,cClieFor,cLoja,cNotaOri,cSerieOri)Local aNota := {}Local aDupl := {}Local aDest := {}Local aEntrega := {}Local aProd := {}Local aICMS := {}Local aICMSST := {}Local aICMSZFM := {}Local aIPI := {}Local aPIS := {} Local aCOFINS := {}Local aPISST := {}Local aCOFINSST := {}Local aISSQN := {}Local aISS := {}Local aCST := {}Local aRetido := {}Local aTransp := {}Local aImp := {}Local aVeiculo := {}Local aReboque := {}Local aReboqu2 := {}Local aEspVol := {}Local aNfVinc := {}Local aPedido := {}Local aOldReg := {}Local aOldReg2 := {}Local aMed := {}Local aArma := {}Local aComb := {}Local aveicProd := {}Local aIEST := {}Local aDI := {}Local aAdi := {}Local aExp := {}Local aDados := {}Local aPisAlqZ := {}Local aCofAlqZ := {}Local aCsosn := {}Local aIPIDev := {}Local aIPIAux := {}Local aNotaServ := {}Local aAnfC := {}Local aAnfI := {} Local aPedCom := {} Local aInfoItem := {}Local aNfVincRur := {}Local aRefECF := {}Local aAreaSD2 := {} // Area do SD2Local aAreaSF2 := {} // Area do SF2Local aAreaSF3 := {}Local aRetServ := {}Local aRetirada := {}Local aMotivoCont := {}Local aTotal := {0,0}Local aIPICST := {}Local cString := ""Local cNatOper := ""Local cModFrete := ""Local cScan := ""Local cEspecie := ""Local cMensCli := ""Local cMensFis := ""Local cNFe := ""Local cMVSUBTRIB := ""Local cLJTPNFE := ""Local cWhere := ""Local cMunISS := ""Local cCodIss := ""Local cValIPI := ""Local cNCM := "" Local cField := ""Local cRetISS := ""Local cTipoNF := ""Local cDocEnt := ""Local cSerEnt := ""Local cFornece := ""Local cLojaEnt := ""Local cTipoNFEnt := ""Local cPedido := ""Local cItemPC := ""Local cNFOri := ""Local cSerOri := ""Local cItemOri := ""Local cProd := ""Local cTribMun := ""Local cModXML := ""Local cItem := ""Local cAnfavea := ""Local cSerNfCup := "" // Serie da NF sobre CupomLocal cNumNfCup := "" // Numero do Documento da NF sobre CupomLocal cD2Cfop := "" // CFOP da nota Local cD2Tes := "" // TES do SD2Local cSitTrib := ""Local cValST := ""Local cBsST := ""Local cChave := ""Local cTPNota := "" Local cItemOr := ""Local cCST := ""Local cInfAdic := ""Local cServ := ""Local cMunPres := ""Local cAliasSE1 := "SE1"Local cAliasSE2 := "SE2"Local cAliasSD1 := "SD1"Local cAliasSD2 := "SD2" Local cAmbiente := {}Local cVerAmb := {}Local cMVNFEMSA1 := AllTrim(GetNewPar("MV_NFEMSA1",""))Local cMVNFEMSF4 := AllTrim(GetNewPar("MV_NFEMSF4",""))Local cMVCFOPREM := AllTrim(GetNewPar("MV_CFOPREM","")) // Parmetro que informa as CFOPs de Remessa para entrega Futura que tero tratamento para que o valor de IPI seja considerado como Outras Despesas Acessrias (tag vOutros).Local cConjug := AllTrim(SuperGetMv("MV_NFECONJ",,""))Local cMV_LJTPNFE := SuperGetMV("MV_LJTPNFE", ," ")Local cMVCODREG := SuperGetMV("MV_CODREG", ," ")Local cValLiqB := SuperGetMv("MV_BX10925", ,"2")Local cDescServ := SuperGetMV("MV_NFESERV", ,"2")Local cCfop := SuperGetMV("MV_SIMPREM", ," ") // Parametro do cadastro das CFOPs para Simples Remessa e cliente optante pelo Simples NacionalLocal cCliLoja := "" Local cCliNota := ""Local cInfAdPr := SuperGetMV("MV_INFADPR", .F.,"2") // Parametro que define de onde sera impressa as informacoes adicionais do produtoLocal cInfAdPed := ""Local cCodProd := "" Local cDescProd := ""Local cMsSeek := ""Local cTpPessoa := ""Local cSeekD1 := "" Local cIpiCst := ""Local cNfRefcup := ""Local cSerRefcup := ""Local cOrigem := ""Local cCSTrib := ""Local cMsgFci := ""Local cPercTrib := ""Local cTpCliente := ""Local nX := 0Local nY := 0Local nCon := 1 Local nCstIpi := 1Local nLenaIpi := 0Local nPosI := 0Local nPosF := 0Local nBaseIrrf := 0Local nValIrrf := 0Local nValIPI := 0Local nValAux := 0Local nValPisZF := 0Local nValCofZF := 0Local nPisRet := 0Local nCofRet := 0Local nInssRet := 0Local nIrRet := 0Local nCsllRet := 0Local nDedu := 0Local nIssRet := 0Local nTotRet := 0Local nRedBC := 0Local nValST := 0Local nValSTAux := 0Local nBsCalcST := 0Local nMargem := 0Local nDesconto := 0 // Desconto no total da NF sobre cupomLocal nDescRed := 0 // Valores dos descontos dos itens referente ao Decreto n 43.080/2002 RICMS-MG (SFT)Local nDesTotal := 0 // Valor total dos descontos referente ao Decreto n 43.080/2002 RICMS-MGLocal nDescIcm := 0 // Valor do desconto do ICMS-Quando TES configurada com AGREGA Valor = DLocal nDescZF := 0 // Valores dos descontos Zona FrancaLocal nPercLeite := 0 //Percentual da reduo do LeiteLocal nValLeite := 0 //Valor da reduao do LeiteLocal nPrTotal := 0 Local nCont := 0Local nValBse := 0Local nValIss := 0Local nIcmsST := 0Local cNumitem := 0Local nOrderSF1 := 0Local nRecnoSF1 := 0 Local nValIcm := 0Local nBaseIcm := 0Local nValParImp := 0Local nContImp := 0Local nSF3Index := 0Local nSF3Recno := 0local nValIPIDestac := 0Local nTotTrib := 0Local nValIcmDev := 0Local nValIcmDif := 0Local lQuery := .F.Local lCalSol := .F.Local lOk := .T.Local lContinua := .T.Local lCabAnf := .T.Local lConsig := .F. // Flag que diz se a operao de consignao mercantilLocal lNfCup := .F.// Define se eh Nf sobre cupomLocal lComplDev := .F. //Utilizado para identificar quando for uma nota de complemento de IPI de uma devuluo.Local lIpiDev := GetNewPar("MV_IPIDEV",.F.) //Apenas para devoluo de compra de IPI (nota de sada). T-Sra gerado na tag vIPI e destacado no campo//VALOR IPI do cabealho do danfe. F-Ser gerado na tag vOutro e destacado nas informaes complementares do danfe//e no campo OUTRAS DESPESAS ACESSORIASLocal lIcmSTDev := GetNewPar("MV_ICSTDEV",.T.) //Indica se sera gravado no XML o valor e base de ICMS ST para nf de devolucao.(Padrao T - leva)Local lNatOper := GetNewPar("MV_SPEDNAT",.F.)Local lInfAdZF := GetNewPar("MV_INFADZF",.F.)Local lEndFis := GetNewPar("MV_SPEDEND",.F.)Local lCapProd := GetNewPar("MV_CAPPROD",.F.)Local lEECFAT := SuperGetMv("MV_EECFAT")Local lMVCOMPET := SuperGetMV("MV_COMBPET", ,.F.)Local lEasy := SuperGetMV("MV_EASY") == "S"Local lSimpNac := SuperGetMV("MV_CODREG")== "1" .or. SuperGetMV("MV_CODREG")== "2"Local lC6_CODINF := SC6->(FieldPos("C6_CODINF")) > 0 Local lCpoAliqSB1 := SB1->(FieldPos("B1_IMPNCM")) > 0 // Verifica a existencia do campo de Aliq. de Imposto NCM/NBSLocal lCpoAliqSBZ := SBZ->(FieldPos("BZ_IMPNCM")) > 0 // Verifica a existencia do campo de Aliq. de Imposto NCM/NBS na tabela SBZLocal lCpoMsgLT := SF4->(FieldPos("F4_MSGLT")) > 0 Local lCpoLoteFor := SB8->(FieldPos("B8_LOTEFOR")) > 0 Local lIpiBenef := GetNewPar("MV_IPIBENE",.F.) //Nota de sada de retorno com tipo = Beneficiamento. .T.- Ser gerado na tag vOutro e destacado nas informaes//complementares do danfe e no campo OUTRAS DESPESAS ACESESSORIAS. .F. - Sra gerado na tag vIPI e destacado no campo//VALOR IPI do cabealho do danfe (procedimento padro)Local oWSNfeLocal lNfCupZero := .F.Local lRural := .F.Local lSeekOk := .F.Local lNotaBenef := .F.Local lDifParc := .F.Local lFCI := GetNewPar("MV_FCIDANF",.F.) // Imprime ou no os dados da FCI no Xml/Danfe (De acordo com as configuraes necessrias)Private aUF := {}Private aCSTIPI := {}Private lAnfavea := If(AliasIndic("CDR") .And. AliasIndic("CDS"),.T.,.F.)aDadosNF := {}//FelipecChave := ""//felipeIf FunName() == "SPEDNFSE"DEFAULT cTipo := PARAMIXB[1]DEFAULT cSerie := PARAMIXB[3]DEFAULT cNota := PARAMIXB[4]DEFAULT cClieFor:= PARAMIXB[5]DEFAULT cLoja := PARAMIXB[6] ElseDefault cTipo := PARAMIXB[1,1] // PARAMIXB[1]Default cSerie := PARAMIXB[1,3] // PARAMIXB[3]Default cNota := PARAMIXB[1,4] // PARAMIXB[4]Default cClieFor := PARAMIXB[1,5] // PARAMIXB[5]Default cLoja := PARAMIXB[1,6] // PARAMIXB[6] aMotivoCont := PARAMIXB[1,7]cVerAmb := PARAMIXB[2]cAmbiente := PARAMIXB[3] DEFAULT cNotaOri := PARAMIXB[4,1] DEFAULT cSerieOri := PARAMIXB[4,2]Endif////Preenchimento do Array de UF //aadd(aUF,{"RO","11"})aadd(aUF,{"AC","12"})aadd(aUF,{"AM","13"})aadd(aUF,{"RR","14"})aadd(aUF,{"PA","15"})aadd(aUF,{"AP","16"})aadd(aUF,{"TO","17"})aadd(aUF,{"MA","21"})aadd(aUF,{"PI","22"})aadd(aUF,{"CE","23"})aadd(aUF,{"RN","24"})aadd(aUF,{"PB","25"})aadd(aUF,{"PE","26"})aadd(aUF,{"AL","27"})aadd(aUF,{"MG","31"})aadd(aUF,{"ES","32"})aadd(aUF,{"RJ","33"})aadd(aUF,{"SP","35"})aadd(aUF,{"PR","41"})aadd(aUF,{"SC","42"})aadd(aUF,{"RS","43"})aadd(aUF,{"MS","50"})aadd(aUF,{"MT","51"})aadd(aUF,{"GO","52"})aadd(aUF,{"DF","53"})aadd(aUF,{"SE","28"})aadd(aUF,{"BA","29"})aadd(aUF,{"EX","99"}) aAdd(aDadosNF,{cTipo,cNota,cSerie,cClieFor,cLoja}) //INCLUIDO POR MARCIO LAPIDUSAS EM 26/05/2010DbSelectArea ("SX6")SX6->(DbSetOrder (1))If (SX6->(DbSeek (cFilant+"MV_SUBTRI")))Do While !SX6->(Eof ()) .And. cFilant==SX6->X6_FIL .And. "MV_SUBTRI"$SX6->X6_VARIf !Empty(SX6->X6_CONTEUD)cMVSUBTRIB += "/"+AllTrim (SX6->X6_CONTEUD)EndIfSX6->(DbSkip ())EndDoElseIf (SX6->(DbSeek (SPACE(LEN(SX6->X6_FIL))+"MV_SUBTRI")))Do While !SX6->(Eof ()) .And. "MV_SUBTRI"$SX6->X6_VARIf !Empty(SX6->X6_CONTEUD)cMVSUBTRIB += "/"+AllTrim (SX6->X6_CONTEUD)EndIfSX6->(DbSkip ())EndDoEndIfIf cTipo == "1"////Posiciona NF //dbSelectArea("SF2")dbSetOrder(1)If MsSeek(xFilial("SF2")+cNota+cSerie+cClieFor+cLoja)////Busca dados do ISS //dbSelectArea("SF3")dbSetOrder(4)If MsSeek(xFilial("SF3")+cClieFor+cLoja+cNota+cSerie)While !SF3->(Eof()) .And. cClieFor+cLoja+cNota+cSerie == SF3->F3_CLIEFOR+SF3->F3_LOJA+SF3->F3_NFISCAL+SF3->F3_SERIEnCont++dbSelectArea("SFT")dbSetOrder(3)//FT_FILIAL+FT_TIPOMOV+FT_CLIEFOR+FT_LOJA+FT_SERIE+FT_NFISCAL+FT_IDENTF3MsSeek(xFilial("SFT")+"S"+SF3->F3_CLIEFOR+SF3->F3_LOJA+SF3->F3_SERIE+SF3->F3_NFISCAL+SF3->F3_IDENTFT)dbSelectArea("SD2")dbSetOrder(3)MsSeek(xFilial("SD2")+SFT->FT_NFISCAL+SFT->FT_SERIE+SFT->FT_CLIEFOR+SFT->FT_LOJA+SFT->FT_PRODUTO)dbSelectArea("SF4")dbSetOrder(1)MsSeek(xFilial("SF4")+SD2->D2_TES)If SF3->F3_TIPO =="S"If SF3->F3_RECISS =="1"cSitTrib := "N"Elseif SF3->F3_RECISS =="2"cSitTrib:= "R"Elseif SF4->F4_LFISS =="I"cSitTrib:= "I"ElsecSitTrib:= "N"EndifEndifdbSelectArea("SB1")dbSetOrder(1)MsSeek(xFilial("SB1")+SD2->D2_COD)If SB1->(FieldPos("B1_TRIBMUN"))>0cTribMun:= SB1->B1_TRIBMUNEndIfdbSelectArea("SD2")dbSetOrder(3)MsSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA)dbSelectArea("SA1")dbSetOrder(1) MsSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)cTpPessoa := SA1->A1_TPESSOAIf nCont == 1Do While !SD2->(Eof ()) .And. xFilial("SD2") == (cAliasSD2)->D2_FILIAL .And.;SF2->F2_DOC == (cAliasSD2)->D2_DOC . And. SF2->F2_SERIE == (cAliasSD2)->D2_SERIE .And.;SF2->F2_CLIENTE == (cAliasSD2)->D2_CLIENTE .And. SF2->F2_LOJA == (cAliasSD2)->D2_LOJA .And.;SF3->F3_TIPO == "S"nPrTotal += (cAliasSD2)->D2_PRCVENSD2->(DbSkip ()) EndDo dbSelectArea("SD2")dbSetOrder(3) MsSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA) dbSelectArea("CD2")dbSetOrder(1)If DbSeek(xFilial("CD2")+"S"+SF2->F2_SERIE+SF2->F2_DOC+cClieFor+cLoja+PadR(SD2->D2_ITEM,4)+(cAliasSD2)->D2_COD)Do While !CD2->(Eof ()) .And. CD2->CD2_DOC == (cAliasSD2)->D2_DOC If Alltrim(CD2->CD2_IMP) == "ISS" nValIss += CD2->CD2_VLTRIB EndIfCD2->(DbSkip ())EndDo EndIf EndIfIf FunName() == "SPEDNFSE" //.Or. FunName() == "SPEDCTE"If SF3->F3_TIPO =="S"aadd(aISSQN,;{AllTrim(SF3->F3_CODISS),;nPrTotal+SF3->F3_VALOBSE,;SF3->F3_CNAE,;SF3->F3_ALIQICM,;IIf((SM0->M0_CODMUN == "3106200" .And. cTpPessoa == "EP"),nValIss,SF3->F3_VALICM),;SF3->F3_VALOBSE,;cTribMun,;SF3->F3_BASEICM,;cSitTrib})Elseaadd(aISSQN,;{"",;"",;"",;"",;"",;"",;"",;"",;""})EndifEndIfSF3->(dbSkip())EndEndif////Tratamento temporario do CTe //If FunName() == "SPEDCTE" .Or. AModNot(SF2->F2_ESPECIE)=="57"cNFe := "CTe35080944990901000143570000000000200000168648"cString := ''cString += ''cString += '350000168646353'cString += 'ENTREGA NORMAL1570202008-09-12T10:49:00'cString += '2282001.12a'cString += '3550308Sao PauloSP0103550308'cString += 'Sao PauloSP3550308Sao PauloSP1'cString += 'TESTE04499090100014300000000000'cString += 'FILIAL SAO PAULOTesteAv. Teste, S/N0Teste3550308'cString += 'Sao Paulo00000000SP58506155000184115237740114CLIENTE SP'cString += 'CLIENTE SPR0BAIRRO NAO CADASTRADO3550308SAO PAULO'cString += '77777777SP002008-09-17'cString += 'CLIENTE RJR0BAIRRO NAO CADASTRADO3550308RIO DE JANEIRO'cString += '44444444RJ1.931.9300250.00'cString += '18.00450.0035080944990901000143570000000000200000168648'cString += '10.000010.0010.0010.00'cString += ''cString += ''////Tratamento Nota de Servico //ElseIf FunName() == "SPEDNFSE"//Modelo do XML ISSNET ou BHcModXML:= mv_par04aadd(aNotaServ,SF2->F2_SERIE)aadd(aNotaServ,SF2->F2_DOC)aadd(aNotaServ,SF2->F2_EMISSAO)////Posiciona cliente //dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)aadd(aDest,AllTrim(SA1->A1_CGC))aadd(aDest,SA1->A1_NOME)aadd(aDest,FisGetEnd(SA1->A1_END,SA1->A1_EST)[1])If "/" $ FisGetEnd(SA1->A1_END,SA1->A1_EST)[3]aadd(aDest,IIF(FisGetEnd(SA1->A1_END,SA1->A1_EST)[3]"",FisGetEnd(SA1->A1_END,SA1->A1_EST)[3],"SN"))Else aadd(aDest,IIF(FisGetEnd(SA1->A1_END,SA1->A1_EST)[2]0,FisGetEnd(SA1->A1_END,SA1->A1_EST)[2],"SN"))EndIfaadd(aDest,FisGetEnd(SA1->A1_END,SA1->A1_EST)[4])aadd(aDest,SA1->A1_BAIRRO)If !Upper(SA1->A1_EST) == "EX"aadd(aDest,SA1->A1_COD_MUN)Elseaadd(aDest,"99999")EndIfaadd(aDest,Upper(SA1->A1_EST))aadd(aDest,SA1->A1_CEP)aadd(aDest,SA1->A1_DDD+SA1->A1_TEL)aadd(aDest,SA1->A1_INSCRM)aadd(aDest,SA1->A1_EMAIL)If !Upper(SA1->A1_EST) == "EX"SC6->(dbSetOrder(4))SC5->(dbSetOrder(1))If (SC6->(MsSeek(xFilial("SC6")+SF2->F2_DOC+SF2->F2_SERIE)))SC5->(MsSeek(xFilial("SC5")+SC6->C6_NUM))If Empty (SC5->C5_FORNISS)aadd(aDest,SA1->A1_COD_MUN)aadd(aDest,Upper(SA1->A1_EST))ElseSA2->(dbSetOrder(1))SA2->(MsSeek(xFilial("SA2")+SC5->C5_FORNISS+"00"))aadd(aDest,SA2->A2_COD_MUN)aadd(aDest,Upper(SA2->A2_EST))EndifElseaadd(aDest,SA1->A1_COD_MUN)aadd(aDest,Upper(SA1->A1_EST))EndIfElseaadd(aDest,"99999")aadd(aDest,Upper(SA1->A1_EST))EndIfdbSelectArea("SF3")dbSetOrder(4)MsSeek(xFilial("SF3")+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE)While !Eof() .And. xFilial("SF3") == SF3->F3_FILIAL .And.;SF2->F2_SERIE == SF3->F3_SERIE .And.;SF2->F2_DOC == SF3->F3_NFISCAL .And. !Empty(SF3->F3_CODISS) .And. SF3->F3_TIPO=="S"//Natureza da OperaoIf SF3->(FieldPos("F3_ISSST"))>0cNatOper:= SF3->F3_ISSSTEndIf//Tipo de RPS - O sistema de BH ainda no est recebendo Notas Conjugadas//If SF2->F2_ESPECIE $ cConjug//cTipoRps:="2" //RPS - Conjugada (Mista)If !Empty(SF2->F2_PDV)cTipoRps:="3" //CupomElsecTipoRps:="1" //RPSEndIf////Pega os impostos de retencao somente quando houver a reteno, //ou seja, os titulos de reteno que existirem //dbSelectArea("SE1")SE1->(dbSetOrder(2))If SE1->(dbSeek(xFilial("SE1")+SF3->F3_CLIEFOR+SF3->F3_LOJA+SF3->F3_SERIE+SF3->F3_NFISCAL))While !SE1->(Eof()) .And. xFilial("SE1") == SE1->E1_FILIAL .And.;SF3->F3_CLIEFOR == SE1->E1_CLIENTE .And. SF3->F3_LOJA == SE1->E1_LOJA .And.;SF3->F3_SERIE == SE1->E1_PREFIXO .And. SF3->F3_NFISCAL == SE1->E1_NUMIf 'NF' $ SE1->E1_TIPOnTotRet+=SumAbatRec(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,SE1->E1_MOEDA,"V",SE1->E1_BAIXA,,@nIrRet,@nCsllRet,@nPisRet,@nCofRet,@nInssRet)EndIfSE1->(DbSkip ())EndDoEndIfaadd(aRetServ,{nIrRet,nCsllRet,nPisRet,nCofRet,nInssRet,nTotRet})////Pega as dedues //If SF3->(FieldPos("F3_ISSSUB"))>0nDedu+= SF3->F3_ISSSUBEndIfIf SF3->(FieldPos("F3_ISSMAT"))>0nDedu+= SF3->F3_ISSMATEndIf////Obtem os dados do Servio //If SX5->(dbSeek(xFilial("SX5")+"60"+SF3->F3_CODISS))//Verifico se a Descrio composta do pedido de Venda ou SX5If cDescServ$"1"SC6->(dbSetOrder(4))SC5->(dbSetOrder(1))MsSeek(xFilial("SC6")+SF3->F3_NFISCAL+SF3->F3_SERIE)MsSeek(xFilial("SC5")+SC6->C6_NUM)cServ := SC5->C5_MENNOTAIf Empty(cServ)cServ := SX5->X5_DESCRIEndIfElsecServ := SX5->X5_DESCRIEndIfEndIf////Verifica se recolhe ISS Retido //If SF3->(FieldPos("F3_RECISS"))>0If SF3->F3_RECISS $"1S"cRetIss :="1"nIssRet := SF3->F3_VALICMElsecRetIss :="2"nIssRet := 0EndifElseIf SA1->A1_RECISS $"1S"cRetIss :="1"nIssRet := SF3->F3_VALICMElsecRetIss :="2"nIssRet := 0EndIf////Verifica se municipio de prestao foi informado no pedido //If SC5->(FieldPos("C5_MUNPRES")) > 0 .And. !Empty(SC5->C5_MUNPRES)cMunPres := SC5->C5_MUNPREScMunPres:= ConvType(aUF[aScan(aUF,{|x| x[1] == aDest[14]})][02]+cMunPres)cDescMunP := SC5->C5_DESCMUNElsecMunPres:= aDest[13]cMunPres:= ConvType(aUF[aScan(aUF,{|x| x[1] == aDest[14]})][02]+cMunPres)cDescMunP := aDest[08]EndIfdbSelectArea("SD2")dbSetOrder(3)MsSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA)dbSelectArea("SB1")dbSetOrder(1)MsSeek(xFilial("SB1")+SD2->D2_COD)If SB1->(FieldPos("B1_TRIBMUN"))>0cTribMun:= SB1->B1_TRIBMUNEndIfcString := ""cString += NFSeIde(aNotaServ,cNatOper,cTipoRPS,cModXML)cString += NFSeServ(aISSQN[1],aRetServ[1],nDedu,nIssRet,cRetIss,cServ,cMunPres,cModXML,cTpPessoa)cString += NFSePrest(cModXML)cString += NFSeTom(aDest,cModXML,cMunPres)ExitEndDoElse////Para o caso de Nota sobre Cupom Fiscal, busca os dados da Nota // If ("CF" $ SF2->F2_ESPECIE .OR. (LjAnalisaLeg(18)[1] .AND. "ECF" $ SF2->F2_ESPECIE )) .AND. ("S" $ SF2->F2_ECF) .AND. !Empty(SF2->F2_NFCUPOM) cSerNfCup := SubStr(SF2->F2_NFCUPOM,1,TamSx3("F2_SERIE")[1])cNumNfCup := SubStr(SF2->F2_NFCUPOM,4,TamSx3("F2_DOC")[1]) If !Empty(cNotaOri) .And. cNotaOri cNumNfCup cSerNfCup := cSerieOricNumNfCup := cNotaOriEndIfaAreaSF2 := SF2->(GetArea())DbSelectArea( "SF2" )DbSetOrder(1) // F2_DOC + F2_SERIE + F2_CLIENTE + F2_LOJAIf DbSeek( xFilial("SF2") + cNumNfCup + cSerNfCup)aadd(aNota,SF2->F2_SERIE)aadd(aNota,IIf(Len(SF2->F2_DOC)==6,"000","")+SF2->F2_DOC)aadd(aNota,SF2->F2_EMISSAO)lNfCup := .T.cCliNota := SF2->F2_CLIENTEcCliLoja := SF2->F2_LOJAEndIfRestArea(aAreaSF2) EndIf If !lNfCup .OR. Len(aNota) == 0aadd(aNota,SF2->F2_SERIE)aadd(aNota,IIF(Len(SF2->F2_DOC)==6,"000","")+SF2->F2_DOC)aadd(aNota,SF2->F2_EMISSAO)EndIf aadd(aNota,cTipo)aadd(aNota,SF2->F2_TIPO)aadd(aNota,SF2->F2_HORA)aadd(aNOta,U_DTSAIDA())////Posiciona cliente ou fornecedor //If !SF2->F2_TIPO $ "DB" dbSelectArea("SA1")dbSetOrder(1)// Tratamento para quando existir um cliente de entrega, utiliz-lo ao invs do cliente de vendaIf !Empty(AllTrim(SF2->F2_CLIENT)) .And. !Empty(AllTrim(SF2->F2_LOJENT))MsSeek(xFilial("SA1")+SF2->F2_CLIENT+SF2->F2_LOJENT)ElseIf !Empty(cCliNota+cCliLoja)MsSeek(xFilial("SA1")+cCliNota+cCliLoja) //Busca os dados do cliente da Nota sobre Cupom para montar os dados do destinatrio do XMLElseMsSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)EndIfEndIfIf cMVNFEMSA1=="C" .And. !Empty(SA1->A1_MENSAGE)cMensCli := SA1->(Formula(A1_MENSAGE))ElseIf cMVNFEMSA1=="F" .And. !Empty(SA1->A1_MENSAGE)cMensFis := SA1->(Formula(A1_MENSAGE))EndIfaadd(aDest,AllTrim(SA1->A1_CGC))aadd(aDest,SA1->A1_NOME)aadd(aDest,MyGetEnd(SA1->A1_END,"SA1")[1]) If MyGetEnd(SA1->A1_END,"SA1")[2]0aadd(aDest,MyGetEnd(SA1->A1_END,"SA1")[3]) Else aadd(aDest,"SN") EndIfaadd(aDest,IIF(SA1->(FieldPos("A1_COMPLEM")) > 0 .And. !Empty(SA1->A1_COMPLEM),SA1->A1_COMPLEM,MyGetEnd(SA1->A1_END,"SA1")[4]))aadd(aDest,SA1->A1_BAIRRO)If !Upper(SA1->A1_EST) == "EX"aadd(aDest,SA1->A1_COD_MUN)aadd(aDest,SA1->A1_MUN)Elseaadd(aDest,"99999")aadd(aDest,"EXTERIOR")EndIfaadd(aDest,Upper(SA1->A1_EST))aadd(aDest,SA1->A1_CEP)aadd(aDest,IIF(Empty(SA1->A1_PAIS),"1058" ,Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_SISEXP")))aadd(aDest,IIF(Empty(SA1->A1_PAIS),"BRASIL",Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_DESCR" )))aadd(aDest,SA1->A1_DDD+SA1->A1_TEL) If !Upper(SA1->A1_EST) == "EX" If !Empty(SA1->A1_INSCRUR) .And. SA1->A1_PESSOA == "F" .And. IIF(!lEndFis,ConvType(SM0->M0_ESTCOB),ConvType(SM0->M0_ESTENT)) == "PR" .And. SA1->A1_EST == "PR"aadd(aDest,SA1->A1_INSCRUR)Elseaadd(aDest,VldIE(SA1->A1_INSCR))EndIFElseaadd(aDest,"")EndIfaadd(aDest,SA1->A1_SUFRAMA)aadd(aDest,SA1->A1_EMAIL)aAdd(aDest,SA1->A1_CONTRIB) // Posio 17aadd(aDest,Iif(SA1->(FieldPos("A1_IENCONT")) > 0 ,SA1->A1_IENCONT,""))If SF2->(FieldPos("F2_CLIENT"))0 .And. !Empty(SF2->F2_CLIENT+SF2->F2_LOJENT) .And. SF2->F2_CLIENT+SF2->F2_LOJENTSF2->F2_CLIENTE+SF2->F2_LOJA dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial("SA1")+SF2->F2_CLIENT+SF2->F2_LOJENT)aadd(aEntrega,SA1->A1_CGC)aadd(aEntrega,MyGetEnd(SA1->A1_END,"SA1")[1])aadd(aEntrega,ConvType(IIF(MyGetEnd(SA1->A1_END,"SA1")[2]0,MyGetEnd(SA1->A1_END,"SA1")[2],"SN")))aadd(aEntrega,MyGetEnd(SA1->A1_END,"SA1")[4])aadd(aEntrega,SA1->A1_BAIRRO)aadd(aEntrega,SA1->A1_COD_MUN)aadd(aEntrega,SA1->A1_MUN)aadd(aEntrega,Upper(SA1->A1_EST))EndIfElse dbSelectArea("SA2")dbSetOrder(1)// Tratamento para quando existir um cliente de entrega, utiliz-lo ao invs do fornecedor (apenas por garantia)If !Empty(AllTrim(SF2->F2_CLIENT)) .And. !Empty(AllTrim(SF2->F2_LOJENT))MsSeek(xFilial("SA2")+SF2->F2_CLIENT+SF2->F2_LOJENT)ElseMsSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)EndIfaadd(aDest,AllTrim(SA2->A2_CGC))aadd(aDest,SA2->A2_NOME)aadd(aDest,MyGetEnd(SA2->A2_END,"SA2")[1]) If MyGetEnd(SA2->A2_END,"SA2")[2]0aadd(aDest,MyGetEnd(SA2->A2_END,"SA2")[3]) Else aadd(aDest,"SN") EndIfaadd(aDest,IIF(SA2->(FieldPos("A2_COMPLEM")) > 0 .And. !Empty(SA2->A2_COMPLEM),SA2->A2_COMPLEM,MyGetEnd(SA2->A2_END,"SA2")[4]))aadd(aDest,SA2->A2_BAIRRO)If !Upper(SA2->A2_EST) == "EX"aadd(aDest,SA2->A2_COD_MUN)aadd(aDest,SA2->A2_MUN)Elseaadd(aDest,"99999")aadd(aDest,"EXTERIOR")EndIfaadd(aDest,Upper(SA2->A2_EST))aadd(aDest,SA2->A2_CEP)aadd(aDest,IIF(Empty(SA2->A2_PAIS),"1058" ,Posicione("SYA",1,xFilial("SYA")+SA2->A2_PAIS,"YA_SISEXP")))aadd(aDest,IIF(Empty(SA2->A2_PAIS),"BRASIL",Posicione("SYA",1,xFilial("SYA")+SA2->A2_PAIS,"YA_DESCR")))aadd(aDest,SA2->A2_DDD+SA2->A2_TEL)If !Upper(SA2->A2_EST) == "EX"aadd(aDest,VldIE(SA2->A2_INSCR))Elseaadd(aDest,"")EndIfaadd(aDest,"")//SA2->A2_SUFRAMAaadd(aDest,SA2->A2_EMAIL)aAdd(aDest, "") // Posio 17 (referente a A1_CONTRIB, sendo passado como vazio j que no existe A2_CONTRIB)aadd(aDest,"")// Posio 18 (referente a A1_IENCONT, sendo passado como vazio j que no existe A2_IENCONT)EndIf////Posiciona transportador //If !Empty(SF2->F2_TRANSP)dbSelectArea("SA4")dbSetOrder(1)MsSeek(xFilial("SA4")+SF2->F2_TRANSP)aadd(aTransp,AllTrim(SA4->A4_CGC))aadd(aTransp,SA4->A4_NOME)If (SA4->A4_TPTRANS "3")aadd(aTransp,VldIE(SA4->A4_INSEST))Else aadd(aTransp,"") EndIf aadd(aTransp,SA4->A4_END)aadd(aTransp,SA4->A4_MUN)aadd(aTransp,Upper(SA4->A4_EST) )aadd(aTransp,SA4->A4_EMAIL )If !Empty(SF2->F2_VEICUL1)dbSelectArea("DA3")dbSetOrder(1)MsSeek(xFilial("DA3")+SF2->F2_VEICUL1)aadd(aVeiculo,DA3->DA3_PLACA)aadd(aVeiculo,DA3->DA3_ESTPLA)aadd(aVeiculo,Iif(DA3->(FieldPos("DA3_RNTC")) > 0 ,DA3->DA3_RNTC,""))//RNTCIf !Empty(SF2->F2_VEICUL2)dbSelectArea("DA3")dbSetOrder(1)MsSeek(xFilial("DA3")+SF2->F2_VEICUL2)aadd(aReboque,DA3->DA3_PLACA)aadd(aReboque,DA3->DA3_ESTPLA)aadd(aReboque,Iif(DA3->(FieldPos("DA3_RNTC")) > 0 ,DA3->DA3_RNTC,"")) //RNTCIf !Empty(SF2->F2_VEICUL3)dbSelectArea("DA3")dbSetOrder(1)MsSeek(xFilial("DA3")+SF2->F2_VEICUL3)aadd(aReboqu2,DA3->DA3_PLACA)aadd(aReboqu2,DA3->DA3_ESTPLA)aadd(aReboqu2,Iif(DA3->(FieldPos("DA3_RNTC")) > 0 ,DA3->DA3_RNTC,"")) //RNTCEndIfEndIfElseIf lNfCup SL1->(dbSetOrder(2))SL1->(MsSeek(xFilial("SL1")+SF2->F2_SERIE+SF2->F2_DOC))aadd(aVeiculo,SL1->L1_PLACA)aadd(aVeiculo,SL1->L1_UFPLACA)aadd(aVeiculo,"") EndIfEndIf// Procura registro nos livros fiscais para tratamentosdbSelectArea("SF3")dbSetOrder(4)If MsSeek(xFilial("SF3")+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE)// Verifica se o CFOP de venda por consignao mercantil (CFOP 5111 ou 6111)If AllTrim(SF3->F3_CFO) == "5111" .Or. AllTrim(SF3->F3_CFO) == "6111"lConsig := .T.EndIf// Msg Simples NacionalIf lSimpNacIf Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " "cMensFis += " "EndIfIf SF2->F2_TIPO == "D"cMensFis += "Documento emitido por ME ou EPP optante pelo Simples Nacional. "cMensFis += "Base de clculo do ICMS: R$ " + Str(SF2->F2_BASEICM, 14, 2) + ". "cMensFis += "Valor do ICMS: R$ " + Str(SF2->F2_VALICM, 14, 2) + ". "ElseIf SF2->F2_VALICM > 0 .And. !Alltrim(SF3->F3_CFO) $ cCfop // Novo TratamentocMensFis += "Documento emitido por ME ou EPP optante pelo Simples Nacional."cMensFis += "Permite o aproveitamento do credito de ICMS no valor de R$ " + Str(SF2->F2_VALICM, 14, 2) + " corresponde a aliquota de "+str(SD2->D2_PICM,5,2)+ "% , nos termos do art. 23 da LC 123/2006."Else cMensFis += "Documento emitido por ME ou EPP optante pelo Simples Nacional. Nao gera direito a credito fiscal de IPI."EndIfEndIfEndIf// Faz o destaque do IPI nos dados complementares caso seja uma venda por consignao mercantil e possuir IPIIf lConsig .And. SF3->F3_VALIPI > 0If Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " "cMensFis += " "EndIfcMensFis += "Valor do IPI: R$ " + AllTrim(Transform(SF3->F3_VALIPI, "@ze 9,999,999,999,999.99")) + " "EndIfEndIfdbSelectArea("SF2")////Volumes / Especie Nota de Saida //cScan := "1"While ( !Empty(cScan) )cEspecie := Upper(FieldGet(FieldPos("F2_ESPECI"+cScan)))If !Empty(cEspecie)nScan := aScan(aEspVol,{|x| x[1] == cEspecie})If ( nScan==0 )aadd(aEspVol,{ cEspecie, FieldGet(FieldPos("F2_VOLUME"+cScan)) , SF2->F2_PLIQUI , SF2->F2_PBRUTO})ElseaEspVol[nScan][2] += FieldGet(FieldPos("F2_VOLUME"+cScan))EndIfEndIfcScan := Soma1(cScan,1)If ( FieldPos("F2_ESPECI"+cScan) == 0 )cScan := ""EndIfEndDo////Procura duplicatas //If !Empty(SF2->F2_DUPL)cLJTPNFE := (StrTran(cMV_LJTPNFE,","," ','"))+" "cWhere := cLJTPNFEdbSelectArea("SE1")dbSetOrder(1)#IFDEF TOPlQuery := .T.cAliasSE1 := GetNextAlias()BeginSql Alias cAliasSE1COLUMN E1_VENCORI AS DATESELECT E1_FILIAL,E1_PREFIXO,E1_NUM,E1_PARCELA,E1_TIPO,E1_VENCORI,E1_VALOR,E1_VLCRUZ,E1_ORIGEM,E1_PIS,E1_COFINS,E1_CSLL,E1_INSS,E1_VLRREALFROM %Table:SE1% SE1WHERESE1.E1_FILIAL = %xFilial:SE1% ANDSE1.E1_PREFIXO = %Exp:SF2->F2_PREFIXO% AND SE1.E1_NUM = %Exp:SF2->F2_DUPL% AND ((SE1.E1_TIPO = %Exp:MVNOTAFIS%) OR ((SE1.E1_ORIGEM IN ('LOJA701','FATA701','LOJA010')) AND SE1.E1_TIPO IN (%Exp:cWhere%))) ANDSE1.%NotDel%ORDER BY %Order:SE1%EndSql#ELSEMsSeek(xFilial("SE1")+SF2->F2_PREFIXO+SF2->F2_DOC)#ENDIFWhile !Eof() .And. xFilial("SE1") == (cAliasSE1)->E1_FILIAL .And.;SF2->F2_PREFIXO == (cAliasSE1)->E1_PREFIXO .And.;SF2->F2_DOC == (cAliasSE1)->E1_NUM If (cAliasSE1)->E1_TIPO = MVNOTAFIS .OR. ((Alltrim((cAliasSE1)->E1_ORIGEM) $ 'LOJA701|FATA701|LOJA010') .AND. (cAliasSE1)->E1_TIPO $ cWhere)//Aletrado a busca do valor da Fatura do campo E1_VLCURZ para E1_VLRREAL, //devido a titulos com desconto da TAXA do Carto de Crito que no devem//ser repassados para o XML e DANFE. nValDupl := IIF((cAliasSE1)->E1_VLRREAL > 0,(cAliasSE1)->E1_VLRREAL,(cAliasSE1)->E1_VLCRUZ)If cValLiqB == "1"aadd(aDupl,{(cAliasSE1)->E1_PREFIXO+(cAliasSE1)->E1_NUM+(cAliasSE1)->E1_PARCELA,(cAliasSE1)->E1_VENCORI;,(nValDupl-(cAliasSE1)->E1_PIS-(cAliasSE1)->E1_COFINS-(cAliasSE1)->E1_CSLL-(cAliasSE1)->E1_INSS)})Elseaadd(aDupl,{(cAliasSE1)->E1_PREFIXO+(cAliasSE1)->E1_NUM+(cAliasSE1)->E1_PARCELA,(cAliasSE1)->E1_VENCORI,nValDupl})EndIfEndIfdbSelectArea(cAliasSE1)dbSkip() EndDo If lQuery dbSelectArea(cAliasSE1) dbCloseArea() dbSelectArea("SE1") EndIfElseaDupl := {}EndIf////Analisa os impostos de retencao ////Tratamento para notas sobre cupom(Incluir demais estados conforme conforme legislacao).//A Nota Fiscal deve ser toda preenchida, sendo a sua escriturao feita com valores zerados, j que o dbito ser feito pelo cupom//Assim, no livro Registro de Sadas deve ser registrado para esta nota apenas a coluna "Observaes", onde sero indicados o seu nmero e a sua srie.//Fundamento: artigo 135, 2, do RICMS/2000. If lNfCup .And. SM0->M0_ESTCOB $ "SP" lNfCupZero:=.T.aAreaSF2 := SF2->(GetArea())DbSelectArea( "SF2" )DbSetOrder(1) // F2_DOC + F2_SERIE + F2_CLIENTE + F2_LOJADbSeek( xFilial("SF2") + cNumNfCup + cSerNfCup)EndIfIf SF2->(FieldPos("F2_VALPIS"))0 .and. SF2->F2_VALPIS>0aadd(aRetido,{"PIS",0,SF2->F2_VALPIS})EndIfIf SF2->(FieldPos("F2_VALCOFI"))0 .and. SF2->F2_VALCOFI>0aadd(aRetido,{"COFINS",0,SF2->F2_VALCOFI})EndIfIf SF2->(FieldPos("F2_VALCSLL"))0 .and. SF2->F2_VALCSLL>0aadd(aRetido,{"CSLL",0,SF2->F2_VALCSLL})EndIfIf SF2->(FieldPos("F2_VALIRRF"))0 .and. SF2->F2_VALIRRF>0aadd(aRetido,{"IRRF",SF2->F2_BASEIRR,SF2->F2_VALIRRF})EndIfIf SF2->(FieldPos("F2_BASEINS"))0 .and. SF2->F2_BASEINS>0aadd(aRetido,{"INSS",SF2->F2_BASEINS,SF2->F2_VALINSS})EndIf//////INCLUSAO DE CAMPOS NA QUERY////////////cField := "%"If SD2->(FieldPos("D2_DESCZFC"))0 .AND. SD2->(FieldPos("D2_DESCZFP"))0cField += ",D2_DESCZFC,D2_DESCZFP" EndIf if SD2->(FieldPos("D2_NFCUP"))0 cField +=",D2_NFCUP"EndIF if SD2->(FieldPos("D2_DESCICM"))0 cField +=",D2_DESCICM" EndIFif SD2->(FieldPos("D2_FCICOD"))0 cField +=",D2_FCICOD" EndIFif SD2->(FieldPos("D2_VLIMPOR"))0 cField +=",D2_VLIMPOR" EndIF cField += "%"//////////////////////////////////////////////If lNfCupZeroRestArea(aAreaSF2)EndIf////Pesquisa itens de nota //dbSelectArea("SD2")dbSetOrder(3)#IFDEF TOPlQuery := .T.cAliasSD2 := GetNextAlias()BeginSql Alias cAliasSD2SELECT D2_FILIAL,D2_SERIE,D2_DOC,D2_CLIENTE,D2_LOJA,D2_COD,D2_TES,D2_NFORI,D2_SERIORI,D2_ITEMORI,D2_TIPO,D2_ITEM,D2_CF,D2_QUANT,D2_TOTAL,D2_DESCON,D2_VALFRE,D2_SEGURO,D2_PEDIDO,D2_ITEMPV,D2_DESPESA,D2_VALBRUT,D2_VALISS,D2_PRUNIT,D2_CLASFIS,D2_PRCVEN,D2_IDENTB6,D2_CODISS,D2_DESCZFR,D2_PREEMB,D2_DESCZFC,D2_DESCZFP,D2_LOTECTL,D2_NUMLOTE,D2_ICMSRET,D2_VALPS3,D2_ORIGLAN,D2_VALCF3,D2_VALIPI,D2_VALACRS,D2_PICM,D2_PDV %Exp:cField% FROM %Table:SD2% SD2WHERESD2.D2_FILIAL = %xFilial:SD2% ANDSD2.D2_SERIE = %Exp:SF2->F2_SERIE% ANDSD2.D2_DOC = %Exp:SF2->F2_DOC% ANDSD2.D2_CLIENTE = %Exp:SF2->F2_CLIENTE% ANDSD2.D2_LOJA = %Exp:SF2->F2_LOJA% ANDSD2.%NotDel%ORDER BY D2_FILIAL,D2_DOC,D2_SERIE,D2_CLIENTE,D2_LOJA,D2_ITEM,D2_CODEndSql#ELSEMsSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA)#ENDIFWhile !Eof() .And. xFilial("SD2") == (cAliasSD2)->D2_FILIAL .And.;SF2->F2_SERIE == (cAliasSD2)->D2_SERIE .And.;SF2->F2_DOC == (cAliasSD2)->D2_DOClContinua := .T.//Se for nota sobre cupom, pega somente os itens do cupom que esto na nota sobre cupom.If SD2->(FieldPos("D2_NFCUP")) 0 .And. !Empty( (cAliasSD2)->D2_NFCUP )If lNfCup .And. !( cSerNfCup + cNumNfCup == SubStr((cAliasSD2)->D2_SERIORI,1,TamSx3("F2_SERIE")[1]) + SubStr((cAliasSD2)->D2_NFCUP,1,TamSx3("F2_DOC")[1]) )lContinua := .F.endIfEndifIf lContinua////Verifica a natureza da operacao //If lNfCupaAreaSD2 := SD2->(GetArea())////Pesquisa itens de nota //If Val((cAliasSD2)->D2_ITEMORI)== 0 cNumitem := (cAliasSD2)->D2_ITEMElse cNumitem := (cAliasSD2)->D2_ITEMORIEndDbSelectArea("SD2")DbSetOrder(3)If DbSeek(xFilial("SD2")+cNumNfCup+cSerNfCup+cCliNota+cCliLoja+(cAliasSD2)->D2_COD+cNumitem)cD2Cfop := SD2->D2_CFcD2Tes := SD2->D2_TESEndIfRestArea(aAreaSD2)// // Informacoes do cupom fiscal referenciado | //| //aadd(aRefECF,{SD2->D2_DOC,SF2->F2_ESPECIE,SF2->F2_PDV})Else////Quando nao for cupom fiscal,// o CFOP deve ser atualizado com o CFOP de cada ITEM, |//cD2Cfop := (cAliasSD2)->D2_CFcD2Tes := (cAliasSD2)->D2_TESEndIfdbSelectArea("SF4")dbSetOrder(1)MsSeek(xFilial("SF4")+cD2Tes)If !lNatOperIf Empty(cNatOper)cNatOper := Alltrim(SF4->F4_TEXTO)ElsecNatOper += Iif(!Alltrim(SF4->F4_TEXTO)$cNatOper,"/ " + SF4->F4_TEXTO,"")Endif ElsedbSelectArea("SX5")dbSetOrder(1)dbSeek(xFilial("SX5")+"13"+SF4->F4_CF)If Empty(cNatOper)cNatOper := AllTrim(SubStr(SX5->X5_DESCRI,1,55))ElsecNatOper += Iif(!AllTrim(SubStr(SX5->X5_DESCRI,1,55)) $ cNatOper, "/ " + AllTrim(SubStr(SX5->X5_DESCRI,1,55)), "") EndIf EndIf If SF4->(FieldPos("F4_BASEICM"))>0 nRedBC := IiF(SF4->F4_BASEICM>0,IiF(SF4->F4_BASEICM == 100,SF4->F4_BASEICM,IiF(SF4->F4_BASEICM > 100,0,100-SF4->F4_BASEICM)),SF4->F4_BASEICM) cCST := SF4->F4_SITTRIB Endif////Verifica as notas vinculadas //If !Empty((cAliasSD2)->D2_NFORI)If (cAliasSD2)->D2_TIPO $ "DBN"dbSelectArea("SD1")dbSetOrder(1)If MsSeek(xFilial("SD1")+(cAliasSD2)->D2_NFORI+(cAliasSD2)->D2_SERIORI+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+(cAliasSD2)->D2_COD+(cAliasSD2)->D2_ITEMORI)dbSelectArea("SF1")dbSetOrder(1)MsSeek(xFilial("SF1")+SD1->D1_DOC+SD1->D1_SERIE+SD1->D1_FORNECE+SD1->D1_LOJA+SD1->D1_TIPO)If SD1->D1_TIPO $ "DB"dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial("SA1")+SD1->D1_FORNECE+SD1->D1_LOJA)ElsedbSelectArea("SA2")dbSetOrder(1)MsSeek(xFilial("SA2")+SD1->D1_FORNECE+SD1->D1_LOJA)EndIf////Obtem os dados de nota fiscal de produtor rural referenciada //Temos duas situacoes: //A NF de sada uma devolucao, onde a NF original pode ser ou nao uma devoluo. //1) Quando a NF original for uma devolucao, devemos utilizar o remetente do documento fiscal, // podendo ser o sigamat.emp no caso de formulario proprio ou o proprio SA1 no caso de nf de // entrada com formulario proprio igual a NAO. //2) Quando a NF original NAO for uma devolucao, neste caso tambem pode variar conforme o // formulario proprio igual a SIM ou NAO. No caso do NAO, os dados a serem obtidos retornara // da tabela SA2. //If AllTrim(SF1->F1_ESPECIE)=="NFP"//para nota de entrada tipo devolucao o emitente eh o cliente ou o sigamat no caso de formulario proprio=simIf SD1->D1_TIPO$"DB"aadd(aNfVincRur,{SD1->D1_EMISSAO,SD1->D1_SERIE,SD1->D1_DOC,SF1->F1_ESPECIE,;IIF(SD1->D1_FORMUL=="S",SM0->M0_CGC,SA1->A1_CGC),; IIF(SD1->D1_FORMUL=="S",SM0->M0_ESTENT,SA1->A1_EST),; IIF(SD1->D1_FORMUL=="S",SM0->M0_INSC,SA1->A1_INSCR)})//para nota de entrada normal o emitente eh o fornecedor ou o sigamat no caso de formulario proprio=simElseaadd(aNfVincRur,{SD1->D1_EMISSAO,SD1->D1_SERIE,SD1->D1_DOC,SF1->F1_ESPECIE,;IIF(SD1->D1_FORMUL=="S",SM0->M0_CGC,SA2->A2_CGC),; IIF(SD1->D1_FORMUL=="S",SM0->M0_ESTENT,SA2->A2_EST),; IIF(SD1->D1_FORMUL=="S",SM0->M0_INSC,SA2->A2_INSCR)})EndIfEndif// // Informacoes do cupom fiscal referenciado | //| //If AllTrim(SF1->F1_ESPECIE)=="CF"aadd(aRefECF,{SD1->D1_DOC,SF1->F1_ESPECIE,""})Endif ////Outros documentos referenciados//if AllTrim(SF1->F1_ESPECIE)"NFP"if cChave dToS( SD1->D1_EMISSAO ) + SD1->D1_SERIE + SD1->D1_DOC + iIf( SD1->D1_TIPO $ "DB", iIf( SD1->D1_FORMUL == "S", SM0->M0_CGC, SA1->A1_CGC ), iIf( SD1->D1_FORMUL == "S", SM0->M0_CGC, SA2->A2_CGC ) ) + SM0->M0_ESTCOB + SF1->F1_ESPECIE + SF1->F1_CHVNFE;.or. ( cAliasSD2 )->D2_ITEM cItemOraAdd( aNfVinc, { SD1->D1_EMISSAO, SD1->D1_SERIE, SD1->D1_DOC, iIf( SD1->D1_TIPO $ "DB", iIf( SD1->D1_FORMUL == "S", SM0->M0_CGC, SA1->A1_CGC ), iIf( SD1->D1_FORMUL == "S", SM0->M0_CGC, SA2->A2_CGC ) ), SM0->M0_ESTCOB, SF1->F1_ESPECIE, SF1->F1_CHVNFE } )cChave := dToS( SD1->D1_EMISSAO ) + SD1->D1_SERIE + SD1->D1_DOC + iIf( SD1->D1_TIPO $ "DB", iIf( SD1->D1_FORMUL == "S", SM0->M0_CGC, SA1->A1_CGC ), iIf( SD1->D1_FORMUL == "S", SM0->M0_CGC, SA2->A2_CGC ) ) + SM0->M0_ESTCOB + SF1->F1_ESPECIE + SF1->F1_CHVNFEendIfcItemOr:= ( cAliasSD2 )->D2_ITEMendIfElseIf (cAliasSD2)->D2_TIPO == "N" dbSelectArea("SFT") dbSetOrder(6) If MsSeek(xFilial("SFT")+"S"+(cAliasSD2)->D2_NFORI+(cAliasSD2)->D2_SERIORI) If !Empty(SFT->FT_DTCANC) dbSelectArea("SF3") dbSetOrder(4) MsSeek(xFilial("SF3")+SFT->FT_CLIEFOR+SFT->FT_LOJA+SFT->FT_NFISCAL+SFT->FT_SERIE) If Empty(SF3->F3_CODRSEF) .Or. SF3->F3_CODRSEF == "101" if cChave dToS( SF3->F3_EMISSAO ) + SF3->F3_SERIE + SF3->F3_NFISCAL + SA1->A1_CGC + SM0->M0_ESTCOB + SF3->F3_ESPECIE + SF3->F3_CHVNFE; .or. (cAliasSD2)->D2_ITEM cItemOr aAdd( aNfVinc, { SF3->F3_EMISSAO, SF3->F3_SERIE, SF3->F3_NFISCAL, SA1->A1_CGC, SM0->M0_ESTCOB, SF3->F3_ESPECIE, SF3->F3_CHVNFE } )cChave := dToS( SF3->F3_EMISSAO ) + SF3->F3_SERIE + SF3->F3_NFISCAL + SA1->A1_CGC + SM0->M0_ESTCOB + SF3->F3_ESPECIE + SF3->F3_CHVNFEendIf cItemOr := ( cAliasSD2 )->D2_ITEMendIfElseIf SFT->FT_ESTADO == "EX" dbSelectArea("SF3") dbSetOrder(4) MsSeek(xFilial("SF3")+SFT->FT_CLIEFOR+SFT->FT_LOJA+SFT->FT_NFISCAL+SFT->FT_SERIE) if cChave dToS( SF3->F3_EMISSAO ) + SF3->F3_SERIE + SF3->F3_NFISCAL + SA1->A1_CGC + SM0->M0_ESTCOB + SF3->F3_ESPECIE + SF3->F3_CHVNFE;.or. ( cAliasSD2 )->D2_ITEM cItemOraAdd( aNfVinc, { SF3->F3_EMISSAO, SF3->F3_SERIE, SF3->F3_NFISCAL, SA1->A1_CGC, SM0->M0_ESTCOB, SF3->F3_ESPECIE, SF3->F3_CHVNFE } )cChave := dToS( SF3->F3_EMISSAO ) + SF3->F3_SERIE + SF3->F3_NFISCAL + SA1->A1_CGC + SM0->M0_ESTCOB + SF3->F3_ESPECIE + SF3->F3_CHVNFEendIfcItemOr := ( cAliasSD2 )->D2_ITEMEndIfEndIfEndIfElseaOldReg := SD2->(GetArea())aOldReg2 := SF2->(GetArea())dbSelectArea("SD2")dbSetOrder(3)// Alterado a chave de busca completa devido ao procedimento de complemento de notas de devolucao de compras. FNC -> 00000008125/2011.// If MsSeek(xFilial("SD2")+(cAliasSD2)->D2_NFORI+(cAliasSD2)->D2_SERIORI+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+(cAliasSD2)->D2_COD+(cAliasSD2)->D2_ITEMORI)If MsSeek(xFilial("SD2")+(cAliasSD2)->D2_NFORI+(cAliasSD2)->D2_SERIORI)//+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+(cAliasSD2)->D2_COD+(cAliasSD2)->D2_ITEMORI)dbSelectArea("SF2")dbSetOrder(1)MsSeek(xFilial("SF2")+SD2->D2_DOC+SD2->D2_SERIE+SD2->D2_CLIENTE+SD2->D2_LOJA)If !SD2->D2_TIPO $ "DB"dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial("SA1")+SD2->D2_CLIENTE+SD2->D2_LOJA)ElsedbSelectArea("SA2")dbSetOrder(1)MsSeek(xFilial("SA2")+SD2->D2_CLIENTE+SD2->D2_LOJA)lComplDev := .T.EndIf////Obtem os dados de nota fiscal de produtor rural referenciada //A NF de sada NAO EH uma devolucao, portanto eh uma nota de saida complementar. Para este tipo// de nota, o emitente eh sempre o sigamat.emp //If AllTrim(SF2->F2_ESPECIE)=="NFP"//para nota de saida normal o emitente eh o sigamataadd(aNfVincRur,{SD2->D2_EMISSAO,SD2->D2_SERIE,SD2->D2_DOC,SF2->F2_ESPECIE,;SM0->M0_CGC,SM0->M0_ESTENT,SM0->M0_INSC})Endif////Outros documentos referenciados//If cChave Dtos(SF2->F2_EMISSAO)+SD2->D2_SERIE+SD2->D2_DOC+SM0->M0_CGC+SM0->M0_ESTCOB+SF2->F2_ESPECIE+SF2->F2_CHVNFEaadd(aNfVinc,{SF2->F2_EMISSAO,SD2->D2_SERIE,SD2->D2_DOC,SM0->M0_CGC,SM0->M0_ESTCOB,SF2->F2_ESPECIE,SF2->F2_CHVNFE}) cChave := Dtos(SF2->F2_EMISSAO)+SD2->D2_SERIE+SD2->D2_DOC+SM0->M0_CGC+SM0->M0_ESTCOB+SF2->F2_ESPECIE+SF2->F2_CHVNFEEndIfEndIfRestArea(aOldReg)RestArea(aOldReg2)EndIfEndIf////Obtem os dados do produto //dbSelectArea("SB1")dbSetOrder(1)MsSeek(xFilial("SB1")+(cAliasSD2)->D2_COD) dbSelectArea("SB5")dbSetOrder(1)If MsSeek(xFilial("SB5")+(cAliasSD2)->D2_COD)If SB5->(FieldPos("B5_DESCNFE")) > 0 .And. !Empty(SB5->B5_DESCNFE)cInfAdic := Alltrim(SB5->B5_DESCNFE)ElsecInfAdic := ""EndIFElsecInfAdic := ""EndIF//------------------------------------------------------------------------//Obtem dados adicionais ou do produto, ou do item do pedido de venda//------------------------------------------------------------------------If lC6_CODINF .And. cInfAdPr "2" .And. !Empty(cInfAdPr)SC6->(dbSetOrder(2))If SC6->(MsSeek(xFilial("SD2")+(cAliasSD2)->(D2_COD+D2_PEDIDO+D2_ITEMPV))) cInfAdPed := Alltrim(MSMM(SC6->C6_CODINF,80))If !Empty(cInfAdPed)//--Obtem informacoes do item do pedido de venda If cInfAdPr == "1" cInfAdic := cInfAdPed //--Obtem informacoes do item do pedido de venda e do produto ElseIf cInfAdPr == "3" cInfAdPed := SubStr(AllTrim(cInfAdPed),1,250) cInfAdic := SubStr(AllTrim(cInfAdic),1,249) cInfAdic += " " + cInfAdPed EndIf EndIfEndIf EndIf//Veiculos NovosIf AliasIndic("CD9")dbSelectArea("CD9")dbSetOrder(1)MsSeek(xFilial("CD9")+"S"+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+(cAliasSD2)->D2_ITEM)EndIf//CombustivelIf AliasIndic("CD6")dbSelectArea("CD6")dbSetOrder(1)MsSeek(xFilial("CD6")+"S"+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+Padr((cAliasSD2)->D2_ITEM,4)+(cAliasSD2)->D2_COD)EndIf//MedicamentosIf AliasIndic("CD7")dbSelectArea("CD7")dbSetOrder(1)MsSeek(xFilial("CD7")+"S"+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+(cAliasSD2)->D2_ITEM)EndIf// Armas de FogoIf AliasIndic("CD8")dbSelectArea("CD8")dbSetOrder(1) MsSeek(xFilial("CD8")+"S"+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+(cAliasSD2)->D2_ITEM)EndIf//AnfaveaIf lAnfaveadbSelectArea("CDR")dbSetOrder(1) DbSeek(xFilial("CDR")+"S"+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA)dbSelectArea("CDS")dbSetOrder(1) cItem := PADR((cAliasSD2)->D2_ITEM,TAMSX3("CDS_ITEM")[1])DbSeek(xFilial("CDS")+"S"+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA+cItem+(cAliasSD2)->D2_COD)EndIf //Desconto Zona Franca PIS e COFINS If SD2->(FieldPos("D2_DESCZFC"))0 .AND. SD2->(FieldPos("D2_DESCZFP"))0If (cAliasSD2)->D2_DESCZFC > 0nValCofZF += (cAliasSD2)->D2_DESCZFCEndIfIf (cAliasSD2)->D2_DESCZFP > 0nValPisZF += (cAliasSD2)->D2_DESCZFPEndIfEndIf dbSelectArea("SC5")dbSetOrder(1)MsSeek(xFilial("SC5")+(cAliasSD2)->D2_PEDIDO)dbSelectArea("SC6")dbSetOrder(1)MsSeek(xFilial("SC6")+(cAliasSD2)->D2_PEDIDO+(cAliasSD2)->D2_ITEMPV+(cAliasSD2)->D2_COD)cTpCliente:= Alltrim(SC5-> C5_TIPOCLI)If !AllTrim(SC5->C5_MENNOTA) $ cMensCliIf Len(cMensCli) > 0 .And. SubStr(cMensCli, Len(cMensCli), 1) " "cMensCli += " "EndIf//-- Tratamento para a integrao entre WMS Logix X ERP Protheus If SC5->( FieldPos("C5_ORIGEM") ) > 0 .And. 'LOGIX' $ Upper(SC5->C5_ORIGEM) LgxMsgNfs()EndIf cMensCli += AllTrim(SC5->C5_MENNOTA)EndIfIf !Empty(SC5->C5_MENPAD) .And. !AllTrim(FORMULA(SC5->C5_MENPAD)) $ cMensFisIf Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " "cMensFis += " "EndIfcMensFis += AllTrim(FORMULA(SC5->C5_MENPAD))EndIfIf !Empty( cNumNfCup )//Tratamento para nota sobre Cupom aAreaSF2 := SF2->(GetArea())DbSelectArea("SFT") DbSetOrder(1) If SFT->(DbSeek((xFilial("SD2")+"S"+ cSerNfCup + cNumNfCup )))IF AllTrim(SFT->FT_OBSERV) " " .AND.(cAliasSD2)->D2_ORIGLAN=="LO"IF !Alltrim(SFT->FT_OBSERV) $ Alltrim(cMensCli) if upper( "F - simples faturamento" ) $ upper( Alltrim(SFT->FT_OBSERV) )cMensCli +=" CF/SERIE: " + AllTrim((cAliasSD2)->D2_DOC) + " " + Alltrim((cAliasSD2)->D2_SERIE) +" ECF:" + Alltrim((cAliasSD2)->D2_PDV)elsecMensCli +=" " + AllTrim(SFT->FT_OBSERV)endifEndIf EndIf EndIFRestArea(aAreaSF2) EndIf////Obtem os dados do veiculo informado no pedido de venda //If Empty(aVeiculo)DbSelectArea("DA3")DbSetOrder(1)If DbSeek(xFilial("DA3")+Iif(SC5->(FieldPos("C5_VEICULO")) > 0 ,SC5->C5_VEICULO,""))aadd(aVeiculo,DA3->DA3_PLACA)aadd(aVeiculo,DA3->DA3_ESTPLA)aadd(aVeiculo,Iif(DA3->(FieldPos("DA3_RNTC")) > 0 ,DA3->DA3_RNTC,""))//RNTCEndIfEndIf//Tratamento para o campo F4_FORMULA,onde atraves do parametro MV_NFEMSF4 se determina se o conteudo da formula devera compor a mensagem do cliente(="C") ou do fisco(="F").If !Empty(SF4->F4_FORMULA) .And. Formula(SF4->F4_FORMULA) NIL .And. ( ( cMVNFEMSF4=="C" .And. !AllTrim(Formula(SF4->F4_FORMULA)) $ cMensCli ) .Or. (cMVNFEMSF4=="F" .And. !AllTrim(Formula(SF4->F4_FORMULA))$cMensFis) )If cMVNFEMSF4=="C"If Len(cMensCli) > 0 .And. SubStr(cMensCli, Len(cMensCli), 1) " "cMensCli += " "EndIfcMensCli +=SF4->(Formula(F4_FORMULA))ElseIf cMVNFEMSF4=="F"If Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " "cMensFis += " "EndIfcMensFis +=SF4->(Formula(F4_FORMULA))EndIfEndIf If SF2->F2_TPFRETE=="C"cModFrete := "0"ElseIf SF2->F2_TPFRETE=="F" cModFrete := "1"ElseIf SF2->F2_TPFRETE=="T" cModFrete := "2"ElseIf SF2->F2_TPFRETE=="S" cModFrete := "9" ElseIf Empty(cModFrete) If SC5->C5_TPFRETE=="C"cModFrete := "0"ElseIf SC5->C5_TPFRETE=="F" cModFrete := "1"ElseIf SC5->C5_TPFRETE=="T" cModFrete := "2"ElseIf SC5->C5_TPFRETE=="S" cModFrete := "9" Else cModFrete := "1" EndIf EndIf If Empty(aPedido)aPedido := {"",AllTrim(SC6->C6_PEDCLI),""}EndIf// Tags xPed e nItemPed (controle de B2B) para nota de sadaIf SC6->(FieldPos("C6_NUMPCOM")) > 0 .And. SC6->(FieldPos("C6_ITEMPC")) > 0If !Empty(SC6->C6_NUMPCOM) .And. !Empty(SC6->C6_ITEMPC) aadd(aPedCom,{SC6->C6_NUMPCOM,SC6->C6_ITEMPC})Elseaadd(aPedCom,{})EndIfElseaadd(aPedCom,{})EndIf//// Conforme Decreto RICM, N 43.080/2002 valido somente em MG deduzir o // imposto dispensado na operao //dbSelectArea("SFT")dbSetOrder(3)MsSeek(xFilial("SFT")+"S"+SD2->D2_CLIENTE+SD2->D2_LOJA+SD2->D2_SERIE+SD2->D2_DOC) If SFT->(FieldPos("FT_DS43080")) 0 .And. SFT->FT_DS43080 > 0 .And. IIF(!lEndFis,ConvType(SM0->M0_ESTCOB),ConvType(SM0->M0_ESTENT)) == "MG"nDescRed := SFT->FT_DS43080 nDesTotal+= nDescRedEndIF //// Incluido o tratamento pelo fato do SIGALOJA nao gravar o campo D2_DESCON // quando e' dado desconto no total da venda. //If lNfCup nDesconto := Round((cAliasSD2)->D2_QUANT*(cAliasSD2)->D2_PRUNIT,2)+((cAliasSD2)->D2_VALACRS)-(cAliasSD2)->D2_TOTAL Else nDesconto := (cAliasSD2)->D2_DESCON If SD2->(FieldPos("D2_DESCICM"))0nDescIcm := ( IIF(SF4->F4_AGREG == "D",(cAliasSD2)->D2_DESCICM,0) )EndIF EndIf //// Tratamento para verificar se o produto e controlado por terceiros (IDENTB6)// e a partir do tipo do pedido (Cliente ou Fornecedor) verifica se existe // amarracao entre Produto X Cliente(SA7) ou Produto X Fornecedor(SA5) //Caso haja a amarraca, o codigo e descricao do produto, assumem o conteudo // da SA7 ou SA5 //cCodProd := (cAliasSD2)->D2_COD cDescProd := IIF(Empty(SC6->C6_DESCRI),SB1->B1_DESC,SC6->C6_DESCRI) If !Empty((cAliasSD2)->D2_IDENTB6) If SC5->C5_TIPO == "N" //--A7_FILIAL + A7_CLIENTE + A7_LOJA + A7_PRODUTO SA7->(dbSetOrder(1)) If SA7->(MsSeek( xFilial("SA7") + (cAliasSD2)->(D2_CLIENTE+D2_LOJA+D2_COD) )) .and. !empty(SA7->A7_CODCLI) .and. !empty(SA7->A7_DESCCLI) cCodProd := SA7->A7_CODCLI cDescProd := SA7->A7_DESCCLI EndIf ElseIf SC5->C5_TIPO == "B" //--A5_FILIAL + A5_FORNECE + A5_LOJA + A5_PRODUTO SA5->(dbSetOrder(1)) If SA5->(MsSeek( xFilial("SA5") + (cAliasSD2)->(D2_CLIENTE+D2_LOJA+D2_COD) )) .and. !empty(SA5->A5_CODPRF) .and. !empty(SA5->A5_DESREF) cCodProd := SA5->A5_CODPRF cDescProd := SA5->A5_DESREF EndIf EndIf EndIf nDescZF := (cAliasSD2)->D2_DESCZFR //Tratamento para que o valor de ICMS ST venha a compor o valor da tag vOutros quando for uma nota de Devoluo, impedindo que seja gerada a rejeio 610. If !lIcmSTDev .And. (cAliasSD2)->D2_TIPO == "D" nIcmsST := (cAliasSD2)->D2_ICMSRET EndIf cOrigem:= IIF(!Empty((cAliasSD2)->D2_CLASFIS),SubStr((cAliasSD2)->D2_CLASFIS,1,1),'0') cCSTrib:= IIF(!Empty((cAliasSD2)->D2_CLASFIS),SubStr((cAliasSD2)->D2_CLASFIS,2,2),'50') //-----------------------------------------------------------------------------------------// FCI - Ficha de Contedo de Importao//-----------------------------------------------------------------------------------------//**Operao INTERNA://1) Emitente da NF (vendedor) NO realizou processo de industrializao com a mercadoria:// - Informar o valor da importao (Revenda)//2) Emitente da NF (vendedor) REALIZOU processo de industrializao com a mercadoria:// - Informar o valor da importao (Industrializao)////**Operao INTERESTADUAL://1) Emitente da NF (vendedor) NO realizou processo de industrializao com a mercadoria:// - Informar o valor da importao (Revenda)//2) Emitente da NF (vendedor) REALIZOU processo de industrializao com a mercadoria:// - Informar o valor da parcela importada do exterior, o nmero da FCI e o Contedo de// Importao expresso percentualmente (Industrializao)//-----------------------------------------------------------------------------------------If (SF4->(FieldPos("F4_CONSUMO")) > 0 .And. SF4->F4_CONSUMO == "N") .And. (cOrigem $"1-2-3-4-5-6" .And. cCSTrib $ "00-10-20-70-90") .And. lFCIcMsgFci := "Resolucao do Senado Federal n 13/12"If (cAliasSD2)->(FieldPos("D2_FCICOD")) > 0 .And. !Empty((cAliasSD2)->D2_FCICOD) //--------------------------------------------------------------------------------//Campo SD2->D2_FCICOD s preenchido nos casos de Industrializao Interestadual//Executar UPDSIGAFIS para criao do campo na D2 e tabela CFD.//Obs.: O campo D2_FCICOD alimentado com o contedo do campo CFD_FCICOD aps//faturar os Documentos de Sada (MATA461).//--------------------------------------------------------------------------------If AliasIndic("CFD")CFD->(DbSetOrder(3)) //Tabela de Ficha de Conteudo de ImportaoIf CFD->(DbSeek(xFilial("CFD")+(cAliasSD2)->D2_FCICOD))//-----------------------------------------------------------------------------------//Obs.: Retirado o valor da parcela importada devido ao Convnio 38/2013 CH: THHDRV//nValParImp := IIf(CFD->(FieldPos("CFD_VPARIM")) > 0,CFD->CFD_VPARIM, 0) //-----------------------------------------------------------------------------------nContImp:= IIf(CFD->(FieldPos("CFD_CONIMP")) > 0,CFD->CFD_CONIMP, 0)//cInfAdic += cMsgFci + ", Valor da Parcela Importada R$ "+ ConvType(nValParImp, 11,2)+ ", Conteudo de Importacao " + ConvType(nContImp, 11,2) + "% , Numero da FCI " + Alltrim((cAliasSD2)->D2_FCICOD)cInfAdic += cMsgFci + ", Conteudo de Importacao " + ConvType(nContImp, 11,2) + "% , Numero da FCI " + Alltrim((cAliasSD2)->D2_FCICOD)EndIEndIf//--------------------------------------------------------------------------------//Preencher o campo C6_VLIMPOR com o valor da Importao para popular o D2_VLIMPOR//Obs.: Somente preencher nos casos em que no utilize RASTRO, caso utilize ser// populado automaticamente.//--------------------------------------------------------------------------------ElseIf (cAliasSD2)->(FieldPos("D2_VLIMPOR")) > 0 .And. !Empty((cAliasSD2)->D2_VLIMPOR)cInfAdic += cMsgFci + ", Valor da Importacao R$ " + ConvType((cAliasSD2)->D2_VLIMPOR, 11,2)EndIfEndIf //Adequao NT2013/003 - Verifica se o valor ser composto da tabela SBZ ou SB1nAliqNcm := 0If lCpoAliqSBZ .And. lCpoAliqSB1 nAliqNcm := RetFldProd(cCodProd,"B1_IMPNCM","SB1")EndIf If nAliqNcm == 0 .And. lCpoAliqSB1 nAliqNcm:= SB1->B1_IMPNCMENdIf If lCpoMsgLT .And. lCpoLoteFor .And. SF4->F4_MSGLT $ "1" cNumLotForn := Alltrim(Posicione("SB8",2,xFilial("SB8")+(cAliasSD2)->D2_NUMLOTE+(cAliasSD2)->D2_LOTECTL+cCodProd,"B8_LOTEFOR"))if !Empty(cNumLotForn)cInfAdic := "LOTE:"+cNumLotForn+" "+cInfAdicEndIf endif aAdd(aInfoItem,{(cAliasSD2)->D2_PEDIDO,(cAliasSD2)->D2_ITEMPV,(cAliasSD2)->D2_TES,(cAliasSD2)->D2_ITEM})aadd(aProd, {Len(aProd)+1,;cCodProd,;IIf(Val(SB1->B1_CODBAR)==0,"",StrZero(Val(SB1->B1_CODBAR),Len(Alltrim(SB1->B1_CODBAR)),0)),;cDescProd,;Iif(!lCapProd,SB1->B1_POSIPI,Substr(SB1->B1_POSIPI,1,2)+Space(6)),;SB1->B1_EX_NCM,;cD2Cfop,;SB1->B1_UM,;(cAliasSD2)->D2_QUANT,;IIF(!(cAliasSD2)->D2_TIPO$"IP",(cAliasSD2)->D2_TOTAL+nDesconto+(cAliasSD2)->D2_DESCZFR,IIF(((cAliasSD2)->D2_TIPO=="I" .And. SF4->F4_AJUSTE == "S" .And. SubStr(SM0->M0_CODMUN,1,2) == "31") .Or. ((cAliasSD2)->D2_TIPO=="I" .And. SF4->F4_AJUSTE == "S" .And. "RESSARCIMENTO" $ Upper(cNatOper) .And. "RESSARCIMENTO" $ Upper(cDescProd)),(cAliasSD2)->D2_TOTAL,0)),;IIF(Empty(SB5->B5_UMDIPI),SB1->B1_UM,SB5->B5_UMDIPI),;IIF(Empty(SB5->B5_CONVDIPI),(cAliasSD2)->D2_QUANT,SB5->B5_CONVDIPI*(cAliasSD2)->D2_QUANT),;(cAliasSD2)->D2_VALFRE,;(cAliasSD2)->D2_SEGURO,;(nDesconto+nDescIcm+nDescRed),;RetPrvUnit(cAliasSD2,nDesconto),;IIF(SB1->(FieldPos("B1_CODSIMP"))0,SB1->B1_CODSIMP,""),; //codigo ANP do combustivelIIF(SB1->(FieldPos("B1_CODIF"))0,SB1->B1_CODIF,""),; //CODIF(cAliasSD2)->D2_LOTECTL,;//Controle de Lote(cAliasSD2)->D2_NUMLOTE,;//Numero do Lote IIF(((cAliasSD2)->D2_TIPO == "D" .And. !lIpiDev) .Or. lConsig .Or. (Alltrim((cAliasSD2)->D2_CF) $ cMVCFOPREM ) .or. ((cAliasSD2)->D2_TIPO == "B" .and. lIpiBenef) .or. ((cAliasSD2)->D2_TIPO=="P" .And. lComplDev .And. !lIpiDev) ,(cAliasSD2)->D2_DESPESA + (cAliasSD2)->D2_VALPS3 + (cAliasSD2)->D2_VALCF3 + (cAliasSD2)->D2_VALIPI + nIcmsST, (cAliasSD2)->D2_DESPESA + (cAliasSD2)->D2_VALPS3 + (cAliasSD2)->D2_VALCF3 + nIcmsST),;//Outras despesas + PISST + COFINSST (Incluso do valor de PIS ST e COFINS ST na tag vOutros - NT 2011/004).E devoluo com IPI. (Nota de compl.Ipi de uma devoluo de compra(MV_IPIDEV=F) leva o IPI em voutros)nRedBC,;//% Reduo da Base de ClculocCST,;//Cd. Situao TributriaIIF(SF4->F4_AGREG='N' .Or. (SF4->F4_ISS='S' .And. SF4->F4_ICM='N'),"0","1"),;// Tipo de agregao de valor ao total do documentocInfAdic,;//Informacoes adicionais do produto(B5_DESCNFE)nDescZF,;(cAliasSD2)->D2_TES,;(cAliasSD2)->D2_TOTAL,;SB1->B1_CODISS,;(cAliasSD2)->D2_VALBRUT,;nAliqNcm,;SB1->B1_IMPORT,;IIF(SB5->(FieldPos("B5_PROTCON"))0,SB5->B5_PROTCON,"")}) //Campo criado para informar protocolo ou convenio ICMSaadd(aCST,{cCSTrib,cOrigem})aadd(aICMS,{})aadd(aIPI,{})aadd(aICMSST,{})aadd(aPIS,{})aadd(aPISST,{})aadd(aCOFINS,{})aadd(aCOFINSST,{})aadd(aISSQN,{})aadd(aAdi,{})aadd(aDi,{})//aadd(aPedCom,{})aadd(aPisAlqZ,{})aadd(aCofAlqZ,{})aadd(aCsosn,{})cNCM := SB1->B1_POSIPI////Tratamento para TAG Exportao quando existe a integrao com a EEC //If lEECFATIf !Empty((cAliasSD2)->D2_PREEMB)aadd(aExp,(GETNFEEXP((cAliasSD2)->D2_PREEMB)))ElseIf !Empty(SC5->C5_PEDEXP)aADD(aExp,(GETNFEEXP(,SC5->C5_PEDEXP)))Elseaadd(aExp,{})EndIfElseiF AliasIndic("CDL")DbSelectArea("CDL")DbSetOrder(1)If DbSeek(xFilial("CDL")+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA) aAdd(aDados,{"ZA02","ufEmbarq" , IIF(CDL->(FieldPos("CDL_UFEMB"))0 , CDL->CDL_UFEMB ,"") }) aAdd(aDados,{"ZA03","xLocEmbarq", IIF(CDL->(FieldPos("CDL_LOCEMB"))0, CDL->CDL_LOCEMB ,"") }) aAdd(aExp,aDados)Elseaadd(aExp,{}) EndIfElseaadd(aExp,{})EndIfIf AliasIndic("CD6") .And. CD6->(FieldPos("CD6_QTAMB")) > 0 .And. CD6->(FieldPos("CD6_UFCONS")) > 0 .And. CD6->(FieldPos("CD6_BCCIDE")) > 0 .And. CD6->(FieldPos("CD6_VALIQ")) > 0 .And. CD6->(FieldPos("CD6_VCIDE")) > 0aadd(aComb,{CD6->CD6_CODANP,CD6->CD6_SEFAZ,CD6->CD6_QTAMB,CD6->CD6_UFCONS,CD6->CD6_BCCIDE,CD6->CD6_VALIQ, CD6->CD6_VCIDE }) Elseif AliasIndic("CD6") .And. CD6->(FieldPos("CD6_QTAMB")) > 0 .And. CD6->(FieldPos("CD6_UFCONS")) > 0 aadd(aComb,{CD6->CD6_CODANP,CD6->CD6_SEFAZ,CD6->CD6_QTAMB,CD6->CD6_UFCONS})Elseaadd(aComb,{})EndIfIf AliasIndic("CD7")aadd(aMed,{CD7->CD7_LOTE,CD7->CD7_QTDLOT,CD7->CD7_FABRIC,CD7->CD7_VALID,CD7->CD7_PRECO})Elseaadd(aMed,{}) EndIf If AliasIndic("CD8")aadd(aArma,{CD8->CD8_TPARMA,CD8->CD8_NUMARMA,CD8->CD8_DESCR}) Elseaadd(aArma,{})EndIfIf AliasIndic("CD9") aadd(aveicProd,{IIF(CD9->CD9_TPOPER$"03",1,IIF(CD9->CD9_TPOPER$"1",2,IIF(CD9->CD9_TPOPER$"2",3,IIF(CD9->CD9_TPOPER$"9",0,"")))),;CD9->CD9_CHASSI,CD9->CD9_CODCOR,CD9->CD9_DSCCOR,CD9->CD9_POTENC,CD9->CD9_CM3POT,CD9->CD9_PESOLI,; CD9->CD9_PESOBR,CD9->CD9_SERIAL,CD9->CD9_TPCOMB,CD9->CD9_NMOTOR,CD9->CD9_CMKG,CD9->CD9_DISTEI,CD9->CD9_RENAVA,; CD9->CD9_ANOMOD,CD9->CD9_ANOFAB,CD9->CD9_TPPINT,CD9->CD9_TPVEIC,CD9->CD9_ESPVEI,CD9->CD9_CONVIN,CD9->CD9_CONVEI,; CD9->CD9_CODMOD,; CD9->(Iif(FieldPos("CD9_CILIND")>0,CD9_CILIND,"")),; CD9->(Iif(FieldPos("CD9_TRACAO")>0,CD9_TRACAO,"")),; CD9->(Iif(FieldPos("CD9_LOTAC")>0,CD9_LOTAC,"")),; CD9->(Iif(FieldPos("CD9_CORDE")>0,CD9_CORDE,"")),; CD9->(Iif(FieldPos("CD9_RESTR")>0,CD9_RESTR,""))})Else aadd(aveicProd,{})EndIf////Tratamento para Anfavea - Cabecalho e Itens //If lAnfavea//CabecalhoaAnfC := {}aadd(aAnfC,{CDR->CDR_VERSAO,CDR->CDR_CDTRAN,CDR->CDR_NMTRAN,CDR->CDR_CDRECP,CDR->CDR_NMRECP,;AModNot(CDR->CDR_ESPEC),CDR->CDR_CDENT,CDR->CDR_DTENT,CDR->CDR_NUMINV}) //Itensaadd(aAnfI,{CDS->CDS_PRODUT,CDS->CDS_PEDCOM,CDS->CDS_SGLPED,CDS->CDS_SEPPEN,CDS->CDS_TPFORN,;CDS->CDS_UM,CDS->CDS_DTVALI,CDS->CDS_PEDREV,CDS->CDS_CDPAIS,CDS->CDS_PBRUTO,CDS->CDS_PLIQUI,;CDS->CDS_TPCHAM,CDS->CDS_NUMCHA,CDS->CDS_DTCHAM,CDS->CDS_QTDEMB,CDS->CDS_QTDIT,CDS->CDS_LOCENT,;CDS->CDS_PTUSO,CDS->CDS_TPTRAN,CDS->CDS_LOTE,CDS->CDS_CPI,CDS->CDS_NFEMB,CDS->CDS_SEREMB,;CDS->CDS_CDEMB,CDS->CDS_AUTFAT,CDS->CDS_CDITEM})Elseaadd(aAnfC,{})aadd(aAnfI,{}) EndIf//Anfavea CabecalhoIf Len(cAnfavea) > 0cAnfavea += cAnfaveaElsecAnfavea := ""EndIfIf lAnfaveaIf !Empty(aAnfC) .And. !Empty(aAnfC[01,01]) .And. lCabAnflCabAnf := .F.cAnfavea := '' + aAnfC[01,01] + ''EndifcAnfavea += ''If !Empty(aAnfC[01,06])cAnfavea += '' + aAnfC[01,06] + ''EndifIf !Empty(aAnfC[01,07])cAnfavea += '' + aAnfC[01,07] + ''EndifIf !Empty(aAnfC[01,08])cAnfavea += '' + Dtos(aAnfC[01,08]) + ''EndifIf !Empty(aAnfC[01,09])cAnfavea += '' + aAnfC[01,09] + ''EndifcAnfavea += ']]>'Endif EndifDbSelectArea("SF2")DbSetOrder(1)MsSeek(xFilial("SF2")+(cAliasSD2)->D2_DOC+(cAliasSD2)->D2_SERIE+(cAliasSD2)->D2_CLIENTE+(cAliasSD2)->D2_LOJA)dbSelectArea("CD2")If !(cAliasSD2)->D2_TIPO $ "DB"dbSetOrder(1)ElsedbSetOrder(2)EndIf DbSelectArea("SFT") DbSetOrder(1) If SFT->(DbSeek(xFilial("SFT")+"S"+(cAliasSD2)->(D2_SERIE+D2_DOC+D2_CLIENTE+D2_LOJA+PadR(D2_ITEM,TamSx3("FT_ITEM")[1])+D2_COD))) If !Empty( SFT->FT_CTIPI ) aadd(aCSTIPI,{SFT->FT_CTIPI}) EndIf //TRATAMENTO DA AQUISIO DE LEITE DO PRODUTOR RURAL CONFORME ARTIGO 207-B, INCISO II RICMS/MG //PEGA OS VALORES E PERCENTUAL DO INNCENTIVO NOS ITENS NA SFT. If SFT->(FieldPos("FT_PRINCMG")) > 0 .And. SFT->(FieldPos("FT_VLINCMG")) > 0If SFT->FT_VLINCMG > 0nValLeite += SFT->FT_VLINCMGEndIfIf nPercLeite == 0 .And. SFT->FT_PRINCMG > 0 nPercLeite := SFT->FT_PRINCMGEndIfEndIfEndIf If Substr(SFT->FT_CLASFIS,2,2) == "40" .And. SFT->FT_DESCZFR>0 aadd(aICMSZFM,{If(SFT->(FieldPos("FT_DESCZFR")) > 0,FT_DESCZFR,""),; If(SFT->(FieldPos("FT_MOTICMS")) > 0,SFT->FT_MOTICMS,"")})Elseaadd(aICMSZFM,{})EndIf CD2->(dbSeek(xFilial("CD2")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA+PadR((cAliasSD2)->D2_ITEM,4)+(cAliasSD2)->D2_COD))While CD2->(!Eof()) .And. xFilial("CD2") == CD2->CD2_FILIAL .And.;"S" == CD2->CD2_TPMOV .And.;SF2->F2_SERIE == CD2->CD2_SERIE .And.;SF2->F2_DOC == CD2->CD2_DOC .And.;SF2->F2_CLIENTE == IIF(!(cAliasSD2)->D2_TIPO $ "DB",CD2->CD2_CODCLI,CD2->CD2_CODFOR) .And.;SF2->F2_LOJA == IIF(!(cAliasSD2)->D2_TIPO $ "DB",CD2->CD2_LOJCLI,CD2->CD2_LOJFOR) .And.;(cAliasSD2)->D2_ITEM == SubStr(CD2->CD2_ITEM,1,Len((cAliasSD2)->D2_ITEM)) .And.;Alltrim((cAliasSD2)->D2_COD) == Alltrim(CD2->CD2_CODPRO) nMargem := IiF(CD2->CD2_PREDBC>0,IiF(CD2->CD2_PREDBC == 100,CD2->CD2_PREDBC,IF(CD2->CD2_PREDBC > 100,0,100-CD2->CD2_PREDBC)),CD2->CD2_PREDBC) /*DbSelectArea("SF7")DbSetOrder(1)If DbSeek(xFilial("SF7")+SB1->B1_GRTRIB+SA1->A1_GRPTRIB)If SF7->F7_BASEICM > 0nMargem := SF7->F7_BASEICMEndIfEndIf*/// Verifica se existe percentual de reducao na SFT referte ao RICMS 43080/2002 MG.If SFT->(FieldPos("FT_PR43080")) 0 .And. SFT->FT_PR43080 0 .And. IIF(!lEndFis,ConvType(SM0->M0_ESTCOB),ConvType(SM0->M0_ESTENT)) == "MG"nMargem := SFT->FT_PR43080EndIfDo CaseCase AllTrim(CD2->CD2_IMP) == "ICM"aTail(aICMS) := {CD2->CD2_ORIGEM,; If(lNfCupZero,POSICIONE("SF4",1,xFilial("SF4")+cD2Tes,"F4_SITTRIB"),CD2->CD2_CST),; CD2->CD2_MODBC,; If(lNfCupZero,0,nMargem),; If(lNfCupZero,0,CD2->CD2_BC),;If(lNfCupZero,0,Iif(CD2->CD2_BC>0,CD2->CD2_ALIQ,0)),;If(lNfCupZero,0,CD2->CD2_VLTRIB),;0,;CD2->CD2_QTRIB,;CD2->CD2_PAUTA,;If(SFT->(FieldPos("FT_MOTICMS")) > 0,SFT->FT_MOTICMS,""),;SFT->FT_ICMSDIF}Case AllTrim(CD2->CD2_IMP) == "SOL"aTail(aICMSST) := {CD2->CD2_ORIGEM,;If(lNfCupZero,POSICIONE("SF4",1,xFilial("SF4")+cD2Tes,"F4_SITTRIB"),CD2->CD2_CST),;CD2->CD2_MODBC,;If(lNfCupZero,0,IiF(CD2->CD2_PREDBC>0,IiF(CD2->CD2_PREDBC > 100,0,100-CD2->CD2_PREDBC),CD2->CD2_PREDBC)),;If(lNfCupZero,0,CD2->CD2_BC),;If(lNfCupZero,0,CD2->CD2_ALIQ),;If(lNfCupZero,0,CD2->CD2_VLTRIB),;CD2->CD2_MVA,;CD2->CD2_QTRIB,;CD2->CD2_PAUTA}lCalSol := .T.////Tratamento CAT04 de 26/02/2010 //Verifica de deve ser garavado no xml o valor e base //de calculo do ICMS ST para notas fiscais de devolucao//Verifica o parametro MV_ICSTDEV // nValST := CD2->CD2_VLTRIB If !lIcmSTDevIf (cAliasSD2)->D2_TIPO=="D" .And. !Empty(nValST)nValSTAux := nValSTAux + nValSTnBsCalcST := nBsCalcST + CD2->CD2_BCnValST := 0aTail(aICMSST):= {CD2->CD2_ORIGEM,CD2->CD2_CST,CD2->CD2_MODBC,0,0,0,0,CD2->CD2_MVA, CD2->CD2_QTRIB,CD2->CD2_PAUTA} EndIfEndIfCase AllTrim(CD2->CD2_IMP) == "IPI"If !lConsigaTail(aIPI) := {SB1->B1_SELOEN,;SB1->B1_CLASSE,;0,;"999",;CD2->CD2_CST,;CD2->CD2_BC,;CD2->CD2_QTRIB,;CD2->CD2_PAUTA,;CD2->CD2_ALIQ,;CD2->CD2_VLTRIB,;CD2->CD2_MODBC,;IiF(CD2->CD2_PREDBC>0,IiF(CD2->CD2_PREDBC > 100,0,100-CD2->CD2_PREDBC),CD2->CD2_PREDBC)}nValIPI := CD2->CD2_VLTRIBIf (Alltrim((cAliasSD2)->D2_CF) $ cMVCFOPREM) .And. !Empty(nValIPI) aTail(aIPI) := {SB1->B1_SELOEN,SB1->B1_CLASSE,0,"999",CD2->CD2_CST,0,0,CD2->CD2_PAUTA,0,0,CD2->CD2_MODBC,0}EndIfIf !lIpiDev .And. !(Alltrim((cAliasSD2)->D2_CF) $ cMVCFOPREM) .OR. ((cAliasSD2)->D2_TIPO=="B" .And. lIpiBenef)If ( (cAliasSD2)->D2_TIPO=="D" .And. !Empty(nValIPI) ).OR. ( (cAliasSD2)->D2_TIPO=="P" .And. lComplDev .And. !Empty(nValIPI) ) .OR. ( (cAliasSD2)->D2_TIPO=="B" .And. lIpiBenef .and. !Empty(nValIPI) )aAdd(aIPIDev, {nValIPI,cNCM})nValIPI := 0cNCM := ""aTail(aIPI) := {SB1->B1_SELOEN,SB1->B1_CLASSE,0,"999",CD2->CD2_CST,0,0,CD2->CD2_PAUTA,0,0,CD2->CD2_MODBC,0}EndIf EndIfEndIfCase AllTrim(CD2->CD2_IMP) == "PS2"If !lNfCupZeroaTail(aPIS) := {CD2->CD2_CST,CD2->CD2_BC,CD2->CD2_ALIQ,CD2->CD2_VLTRIB,CD2->CD2_QTRIB,CD2->CD2_PAUTA}ElseaTail(aPIS) := {POSICIONE("SF4",1,xFilial("SF4")+cD2Tes,"F4_CSTPIS"),0,0,0,CD2->CD2_QTRIB,CD2->CD2_PAUTA}EndIfCase AllTrim(CD2->CD2_IMP) == "CF2"If !lNfCupZeroaTail(aCOFINS) := {CD2->CD2_CST,CD2->CD2_BC,CD2->CD2_ALIQ,CD2->CD2_VLTRIB,CD2->CD2_QTRIB,CD2->CD2_PAUTA}ElseaTail(aCOFINS) := {POSICIONE("SF4",1,xFilial("SF4")+cD2Tes,"F4_CSTCOF"),0,0,0,CD2->CD2_QTRIB,CD2->CD2_PAUTA}EndIfCase AllTrim(CD2->CD2_IMP) == "PS3" .And. (cAliasSD2)->D2_VALISS==0If !lNfCupZeroaTail(aPISST) := {CD2->CD2_CST,CD2->CD2_BC,CD2->CD2_ALIQ,CD2->CD2_VLTRIB,CD2->CD2_QTRIB,CD2->CD2_PAUTA}ElseaTail(aPISST) := {POSICIONE("SF4",1,xFilial("SF4")+cD2Tes,"F4_CSTPIS"),0,0,0,CD2->CD2_QTRIB,CD2->CD2_PAUTA}EndIfCase AllTrim(CD2->CD2_IMP) == "CF3" .And. (cAliasSD2)->D2_VALISS==0If !lNfCupZeroaTail(aCOFINSST) := {CD2->CD2_CST,CD2->CD2_BC,CD2->CD2_ALIQ,CD2->CD2_VLTRIB,CD2->CD2_QTRIB,CD2->CD2_PAUTA}ElseaTail(aCOFINSST) := {POSICIONE("SF4",1,xFilial("SF4")+cD2Tes,"F4_CSTCOF"),0,0,0,CD2->CD2_QTRIB,CD2->CD2_PAUTA}EndIfCase AllTrim(CD2->CD2_IMP) == "ISS" If Empty(aISS)aISS := {0,0,0,0,0}EndIfaISS[01] += (cAliasSD2)->D2_TOTAL+(cAliasSD2)->D2_DESCONaISS[02] += CD2->CD2_BCaISS[03] += CD2->CD2_VLTRIBcMunISS := ConvType(aUF[aScan(aUF,{|x| x[1] == aDest[09]})][02]+aDest[07])cCodIss := AllTrim((cAliasSD2)->D2_CODISS)If AliasIndic("CDN") .And. CDN->(dbSeek(xFilial("CDN")+cCodIss))cCodIss := AllTrim(CDN->CDN_CODLST)EndIfIf SF3->F3_TIPO =="S"If SF3->F3_RECISS =="1"cSitTrib := "N"Elseif SF3->F3_RECISS =="2"cSitTrib:= "R"Elseif SF4->F4_LFISS =="I"cSitTrib:= "I"ElsecSitTrib:= "N"EndifEndifaTail(aISSQN) := {CD2->CD2_BC,CD2->CD2_ALIQ,CD2->CD2_VLTRIB,cMunISS,cCodIss,cSitTrib}EndCasedbSelectArea("CD2")dbSkip()EndDo//Tratamento para que o valor de PIS ST e COFINS ST venha a compor o valor total da tag vOutros (NT 2011/004). E devoluo de compra com IPI no tributadoIf ((cAliasSD2)->D2_TIPO == "D" .and. !lIpiDev) .Or. lConsig .Or. (Alltrim((cAliasSD2)->D2_CF) $ cMVCFOPREM ) .OR. ((cAliasSD2)->D2_TIPO == "B" .and. lIpiBenef) .OR. ((cAliasSD2)->D2_TIPO=="P" .And. lComplDev .And. !lIpiDev)aTotal[01] += (cAliasSD2)->D2_DESPESA + (cAliasSD2)->D2_VALPS3 + (cAliasSD2)->D2_VALCF3 + (cAliasSD2)->D2_VALIPI + nIcmsSTElse aTotal[01] += (cAliasSD2)->D2_DESPESA + (cAliasSD2)->D2_VALPS3 + (cAliasSD2)->D2_VALCF3 + nIcmsSTEndIf If (cAliasSD2)->D2_TIPO == "I"If (cAliasSD2)->D2_ICMSRET > 0aTotal[02] += (cAliasSD2)->D2_VALBRUTElseIf (SubStr(SM0->M0_CODMUN,1,2) == "31" .And. SF4->F4_AJUSTE == "S") .Or. ( (SF4->F4_AGREG == "S" .And. SF4->F4_AJUSTE == "S") .And. ("RESSARCIMENTO" $ Upper(cNatOper) .And. "RESSARCIMENTO" $ Upper(cDescProd)))aTotal[02] += (cAliasSD2)->D2_TOTALElseaTotal[02] += 0EndifElse aTotal[02] += (cAliasSD2)->D2_VALBRUT EndIfIf lCalSol .OR. lMVCOMPETdbSelectArea("SF3")dbSetOrder(4)If MsSeek(xFilial("SF3")+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE)If At (SF3->F3_ESTADO, cMVSUBTRIB)>0nPosI :=At (SF3->F3_ESTADO, cMVSUBTRIB)+2nPosF :=At ("/", SubStr (cMVSUBTRIB, nPosI))-1nPosF :=IIf(nPosF(FieldPos("FT_CSTPIS")) > 0 .And. SFT->(FieldPos("FT_CSTCOF")) > 0dbSelectArea("SFT") //Livro Fiscal Por Item da NFdbSetOrder(1) //FT_FILIAL+FT_TIPOMOV+FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_LOJA+FT_ITEM+FT_PRODUTOIf MsSeek(xFilial("SFT")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA+PadR((cAliasSD2)->D2_ITEM,4)+(cAliasSD2)->D2_COD)IF Empty(aPis[Len(aPis)]) .And. !empty(SFT->FT_CSTPIS)aTail(aPisAlqZ):= {SFT->FT_CSTPIS}EndIfIF Empty(aCOFINS[Len(aCOFINS)]) .And. !empty(SFT->FT_CSTCOF)aTail(aCofAlqZ) := {SFT->FT_CSTCOF}EndIfEndIfElseIF Empty(aPis[Len(aPis)]) .And. !empty(SF4->F4_CSTPIS)aTail(aPisAlqZ):= {SF4->F4_CSTPIS}EndIfIF Empty(aCOFINS[Len(aCOFINS)]) .And. !empty(SF4->F4_CSTCOF)aTail(aCofAlqZ):= {SF4->F4_CSTCOF}EndIfEndIfIf !len(aCofAlqZ)>0 .or. !len(aPisAlqZ)>0aadd(aCofAlqZ,{}) aadd(aPisAlqZ,{})EndifIf SF4->(FieldPos("F4_CSOSN"))>0aTail(aCsosn):= SF4->F4_CSOSNElseaTail(aCsosn):= ""EndIf If !len(aCsosn)>0 aadd(aCsosn,"") EndifendifIf (cAliasSD2)->D2_TIPO == "B"lNotaBenef := .T.EndIfdbSelectArea(cAliasSD2)dbSkip() EndDo If nDesTotal > 0 aTotal[2] -= nDesTotal EndIf//Tratamento para incluir a mensagem em informacoes adicionais do SuframaIf !Empty(aDest[15])// Msg Zona Franca de Manaus / ALCdbSelectArea("SF3")dbSetOrder(4)dbSeek (xFilial("SF3")+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE)Do While !SF3->(Eof()) .AND. xFilial("SF3") == SF3->F3_FILIAL .And.;SF2->F2_CLIENTE == SF3->F3_CLIEFOR .And. SF2->F2_LOJA == SF3->F3_LOJA .And.;SF2->F2_DOC == SF3->F3_NFISCAL .And. SF2->F2_SERIE == SF3->F3_SERIEnValBse += SF3->F3_VALOBSESF3->(DbSkip ()) EndDoIf MsSeek(xFilial("SF3")+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE)If !SF3->F3_DESCZFR == 0 .or. ( lInfAdZF .and. nValBse > 0 )If Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " " cMensFis += " "EndIfIf lInfAdZF .And. (nValPisZF > 0 .Or. nValCofZF > 0)cMensFis += "Descontos Ref. a Zona Franca de Manaus / ALC. ICMS - R$ "+str(SF3->F3_VALOBSE-SF2->F2_DESCONT-nValPisZF-nValCofZF,13,2)+", PIS - R$ "+ str(nValPisZF,13,2) +"e COFINS - R$ " +str(nValCofZF,13,2) ElseIF !lInfAdZF .And. (nValPisZF > 0 .Or. nValCofZF > 0) cMensFis += "Desconto Ref. ao ICMS - Zona Franca de Manaus / ALC. R$ "+str(SF3->F3_VALOBSE-SF2->F2_DESCONT-nValPisZF-nValCofZF,13,2) Else cMensFis += "Total do desconto Ref. a Zona Franca de Manaus / ALC. R$ "+str(nValBse-SF2->F2_DESCONT,13,2) EndIFEndIf EndIfEndIF//TRATAMENTO DA AQUISIO DE LEITE DO PRODUTOR RURAL CONFORME ARTIGO 207-B, INCISO II RICMS/MG//INSERE MSG EM INFADFISCO E SOMA NO TOTAL DA NOTA.If nValLeite > 0 .And. nPercLeite > 0cMensFis += Alltrim(Str(nPercLeite,10,2))+'% Incentivo produo e industrializao do leite = R$ '+ Alltrim(Str(nValLeite,10,2))aTotal[02] += nValLeiteEndIfIf Len(aIPIDev)>0 nX := 1Do While lOk nValAux := aIPIDev[nX][1] cNCMAux := aIPIDev[nX][2] npos := aScan( aIPIAux,{|x| x[2]==cNCMAux}) IF npos >0aIPIAux[npos][1]+=nValAux ElseAaDd(aIPIAux,{nValAux,cNCMAux}) EndIfnX += 1If nX > Len(aIPIDev)lOk := .F.EndIfEndDoIf !lNotaBenefFor nX := 1 To Len(aIPIAux)cValIPI := AllTrim(Str(aIPIAux[nX][1],15,2))cMensCli += " "cMensCli += "(Valor do IPI: R$ "+cValIPI+" - "+"Classificao fiscal: "+aIPIAux[nX][2]+") "cValIPI := ""cNCMAux := ""Next nXElseFor nX := 1 To Len(aIPIAux)cValIPI := AllTrim(Str(aIPIAux[nX][1],15,2))cMensCli += " "cMensCli += "(Valor do IPI: R$ "+cValIPI+") "cValIPI := ""cNCMAux := ""Next nXEndIfEndIfIf nValSTAux > 0 cValST := AllTrim(Str(nValSTAux,15,2))cBsST := AllTrim(Str(nBsCalcST,15,2))cMensCli += " "cMensCli += "(Base de Calculo do ICMS ST: R$ "+cBsST+ " - "+"Valor do ICMS ST: R$ "+cValST+") "cValST := "" cBsST := "" nBsCalcST := 0nValSTAux := 0EndIf If lQuery dbSelectArea(cAliasSD2) dbCloseArea() dbSelectArea("SD2") EndIfEndIfEndIfElsedbSelectArea("SF1")dbSetOrder(1)If MsSeek(xFilial("SF1")+cNota+cSerie+cClieFor+cLoja)////Tratamento temporario do CTe //If FunName() == "SPEDCTE" .Or. AModNot(SF1->F1_ESPECIE)=="57"cNFe := "CTe35080944990901000143570000000000200000168648"cString := ''cString += '35'cString += '0000168646353ENTREGA NORMAL157020'cString += '2008-09-12T10:49:00228200'cString += '1.12a3550308Sao PauloSP010'cString += '3550308Sao PauloSP3550308Sao Paulo'cString += 'SP1TESTE044990901000143'cString += '00000000000FILIAL SAO PAULOTesteAv. Teste, S/N0Teste'cString += '3550308Sao Paulo00000000SP58506155000184115237740114'cString += 'CLIENTE SPCLIENTE SPR0BAIRRO NAO CADASTRADO3550308'cString += 'SAO PAULO77777777SP002008-09-17'cString += 'CLIENTE RJR0BAIRRO NAO CADASTRADO3550308RIO DE JANEIRO'cString += '44444444RJ1.931.9300250.0018.00450.00'cString += '3508094499090100014357000000000020000016864810.00'cString += '0010.0010.0010.00'cString += ''cString += ''Elseaadd(aNota,SF1->F1_SERIE)aadd(aNota,IIF(Len(SF1->F1_DOC)==6,"000","")+SF1->F1_DOC)aadd(aNota,SF1->F1_EMISSAO)aadd(aNota,cTipo)aadd(aNota,SF1->F1_TIPO)aadd(aNota,SF1->F1_HORA)aadd(aNota,DATE())If SF1->F1_TIPO $ "DB" dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial("SA1")+cClieFor+cLoja)If cMVNFEMSA1=="C" .And. !Empty(SA1->A1_MENSAGE)cMensCli := SA1->(Formula(A1_MENSAGE))ElseIf cMVNFEMSA1=="F" .And. !Empty(SA1->A1_MENSAGE)cMensFis := SA1->(Formula(A1_MENSAGE))EndIfaadd(aDest,AllTrim(SA1->A1_CGC))aadd(aDest,SA1->A1_NOME)aadd(aDest,MyGetEnd(SA1->A1_END,"SA1")[1]) If MyGetEnd(SA1->A1_END,"SA1")[2]0aadd(aDest,MyGetEnd(SA1->A1_END,"SA1")[3]) Else aadd(aDest,"SN") EndIfaadd(aDest,MyGetEnd(SA1->A1_END,"SA1")[4])aadd(aDest,SA1->A1_BAIRRO)If !Upper(SA1->A1_EST) == "EX"aadd(aDest,SA1->A1_COD_MUN)aadd(aDest,SA1->A1_MUN)Elseaadd(aDest,"99999")aadd(aDest,"EXTERIOR")EndIfaadd(aDest,Upper(SA1->A1_EST))aadd(aDest,SA1->A1_CEP)aadd(aDest,IIF(Empty(SA1->A1_PAIS),"1058" ,Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_SISEXP")))aadd(aDest,IIF(Empty(SA1->A1_PAIS),"BRASIL",Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_DESCR" )))aadd(aDest,SA1->A1_DDD+SA1->A1_TEL)If !Upper(SA1->A1_EST) == "EX"aadd(aDest,VldIE(SA1->A1_INSCR))Elseaadd(aDest,"")EndIfaadd(aDest,SA1->A1_SUFRAMA)aadd(aDest,SA1->A1_EMAIL)aAdd(aDest, SA1->A1_CONTRIB) // Posio 17aadd(aDest,Iif(SA1->(FieldPos("A1_IENCONT")) > 0 ,SA1->A1_IENCONT,""))Else dbSelectArea("SA2")dbSetOrder(1) MsSeek(xFilial("SA2")+cClieFor+cLoja)aadd(aDest,AllTrim(SA2->A2_CGC))aadd(aDest,SA2->A2_NOME)aadd(aDest,MyGetEnd(SA2->A2_END,"SA2")[1])If MyGetEnd(SA2->A2_END,"SA2")[2]0aadd(aDest,MyGetEnd(SA2->A2_END,"SA2")[3]) Else aadd(aDest,"SN") EndIfaadd(aDest,MyGetEnd(SA2->A2_END,"SA2")[4])aadd(aDest,SA2->A2_BAIRRO)If !Upper(SA2->A2_EST) == "EX"aadd(aDest,SA2->A2_COD_MUN)aadd(aDest,SA2->A2_MUN)Elseaadd(aDest,"99999")aadd(aDest,"EXTERIOR")EndIfaadd(aDest,Upper(SA2->A2_EST))aadd(aDest,SA2->A2_CEP)aadd(aDest,IIF(Empty(SA2->A2_PAIS),"1058" ,Posicione("SYA",1,xFilial("SYA")+SA2->A2_PAIS,"YA_SISEXP")))aadd(aDest,IIF(Empty(SA2->A2_PAIS),"BRASIL",Posicione("SYA",1,xFilial("SYA")+SA2->A2_PAIS,"YA_DESCR")))aadd(aDest,SA2->A2_DDD+SA2->A2_TEL)If !Upper(SA2->A2_EST) == "EX"aadd(aDest,VldIE(SA2->A2_INSCR))Elseaadd(aDest,"")EndIfaadd(aDest,"")//SA2->A2_SUFRAMAaadd(aDest,SA2->A2_EMAIL)aAdd(aDest, "") // Posio 17 (referente a A1_CONTRIB, sendo passado como vazio j que no existe A2_CONTRIB)aAdd(aDest, "")// Posio 18 (referente a A1_IENCONT, sendo passado como vazio j que no existe A2_IENCONT) If SF1->(FieldPos("F1_FORRET"))0 .And. !Empty(SF1->F1_FORRET+SF1->F1_LOJARET) .And. SF1->F1_FORRET+SF1->F1_LOJARETSF1->F1_FORNECE+SF1->F1_LOJA dbSelectArea("SA2")dbSetOrder(1)MsSeek(xFilial("SA2")+SF1->F1_FORRET)aadd(aRetirada,SA2->A2_CGC)aadd(aRetirada,MyGetEnd(SA2->A2_END,"SA2")[1])aadd(aRetirada,ConvType(IIF(MyGetEnd(SA2->A2_END,"SA2")[2]0,MyGetEnd(SA2->A2_END,"SA2")[2],"SN")))aadd(aRetirada,MyGetEnd(SA2->A2_END,"SA2")[4])aadd(aRetirada,SA2->A2_BAIRRO)aadd(aRetirada,SA2->A2_COD_MUN)aadd(aRetirada,SA2->A2_MUN)aadd(aRetirada,Upper(SA2->A2_EST))EndIfIf SF1->(FieldPos("F1_FORENT")) 0 .And. !Empty(SF1->F1_FORENT+SF1->F1_LOJAENT) .And. SF1->F1_FORENT+SF1->F1_LOJAENT SF1->F1_FORNECE+SF1->F1_LOJA dbSelectArea("SA2")dbSetOrder(1)MsSeek(xFilial("SA2")+SF1->F1_FORENT+SF1->F1_LOJAENT)aadd(aEntrega,SA2->A2_CGC)aadd(aEntrega,MyGetEnd(SA2->A2_END,"SA2")[1])aadd(aEntrega,ConvType(IIF(MyGetEnd(SA2->A2_END,"SA2")[2]0,MyGetEnd(SA2->A2_END,"SA2")[2],"SN")))aadd(aEntrega,MyGetEnd(SA2->A2_END,"SA2")[4])aadd(aEntrega,SA2->A2_BAIRRO)aadd(aEntrega,SA2->A2_COD_MUN)aadd(aEntrega,SA2->A2_MUN)aadd(aEntrega,Upper(SA2->A2_EST))EndIfEndIfIf SF1->F1_TIPO $ "DB" dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA)Else dbSelectArea("SA2")dbSetOrder(1)MsSeek(xFilial("SA2")+SF1->F1_FORNECE+SF1->F1_LOJA)EndIf// Faz o destaque do IPI nos dados complementares caso seja uma venda que possuir IPInSF3Recno:= SF3->(RECNO())nSF3Index:= SF3->(IndexOrd()) SF3->(dbSetOrder(5))if ( SF3->(dbSeek(xFilial("SF3")+cSerie+cNota)) )while SF3->F3_SERIE == cSerie .and. SF3->F3_NFISCAL == cNotaIf SF3->F3_VALIPI > 0 .And. SF3->F3_TIPO == "D"nValIPIDestac += SF3->F3_VALIPIEndIfSF3->(dbSkip())endif nValIPIDestac > 0If Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " "cMensFis += " "EndIfcMensFis += "Valor do IPI: R$ " + AllTrim(Transform(nValIPIDestac, "@ze 9,999,999,999,999.99")) + " "endifEndIfSF3->(DBSETORDER(nSF3Index))SF3->(DBGOTO(nSF3Recno))////Verifica Duplicatas da nota de entrada //If !Empty(SF1->F1_DUPL)dbSelectArea("SE2")dbSetOrder(1)#IFDEF TOPlQuery := .T.cAliasSE2 := GetNextAlias()BeginSql Alias cAliasSE2COLUMN E2_VENCORI AS DATESELECT E2_FILIAL,E2_PREFIXO,E2_NUM,E2_PARCELA,E2_TIPO,E2_FORNECE,E2_LOJA,E2_VENCORI,E2_VALOR,E2_VLCRUZ,E2_ORIGEMFROM %Table:SE2% SE2WHERESE2.E2_FILIAL = %xFilial:SE2% ANDSE2.E2_PREFIXO = %Exp:SF1->F1_PREFIXO% ANDSE2.E2_NUM = %Exp:SF1->F1_DUPL% ANDSE2.E2_FORNECE = %Exp:SF1->F1_FORNECE% ANDSE2.E2_LOJA = %Exp:SF1->F1_LOJA% ANDSE2.E2_TIPO = %Exp:MVNOTAFIS% ANDSE2.%NotDel%ORDER BY %Order:SE2%EndSql#ELSEMsSeek(xFilial("SE2")+SF1->F1_PREFIXO+SF1->F1_DOC)#ENDIFWhile !Eof() .And. xFilial("SE2") == (cAliasSE2)->E2_FILIAL .And.;SF1->F1_PREFIXO == (cAliasSE2)->E2_PREFIXO .And.;SF1->F1_DOC == (cAliasSE2)->E2_NUMIf (cAliasSE2)->E2_TIPO==MVNOTAFIS .And. (cAliasSE2)->E2_FORNECE==SF1->F1_FORNECE .And. (cAliasSE2)->E2_LOJA==SF1->F1_LOJAaadd(aDupl,{(cAliasSE2)->E2_PREFIXO+(cAliasSE2)->E2_NUM+(cAliasSE2)->E2_PARCELA,(cAliasSE2)->E2_VENCORI,(cAliasSE2)->E2_VLCRUZ})EndIfdbSelectArea(cAliasSE2)dbSkip() EndDo If lQuery dbSelectArea(cAliasSE2) dbCloseArea() dbSelectArea("SE2") EndIfElseaDupl := {}EndIf////Analisa os impostos de retencao //If SF1->(FieldPos("F1_VALPIS"))0 .And. SF1->F1_VALPIS>0aadd(aRetido,{"PIS",0,SF1->F1_VALPIS})EndIfIf SF1->(FieldPos("F1_VALCOFI"))0 .And. SF1->F1_VALCOFI>0aadd(aRetido,{"COFINS",0,SF1->F1_VALCOFI})EndIfIf SF1->(FieldPos("F1_VALCSLL"))0 .And. SF1->F1_VALCSLL>0aadd(aRetido,{"CSLL",0,SF1->F1_VALCSLL})EndIfIf SF1->(FieldPos("F1_INSS"))0 .and. SF1->F1_INSS>0aadd(aRetido,{"INSS",SF1->F1_BASEINS,SF1->F1_INSS})EndIfdbSelectArea("SF1")////Volumes / Especie Nota de Entrada //cScan := "1"If (FieldPos("F1_ESPECI"+cScan))>0While ( !Empty(cScan) )cEspecie := Upper(FieldGet(FieldPos("F1_ESPECI"+cScan)))If !Empty(cEspecie)nScan := aScan(aEspVol,{|x| x[1] == cEspecie})If ( nScan==0 )aadd(aEspVol,{ cEspecie, FieldGet(FieldPos("F1_VOLUME"+cScan)) , SF1->F1_PLIQUI , SF1->F1_PBRUTO})ElseaEspVol[nScan][2] += FieldGet(FieldPos("F1_VOLUME"+cScan))EndIfEndIfcScan := Soma1(cScan,1)If ( FieldPos("F1_ESPECI"+cScan) == 0 )cScan := ""EndIfEndDoEndIf////Posiciona transportador //If FieldPos("F1_TRANSP") > 0 .And. !Empty(SF1->F1_TRANSP)dbSelectArea("SA4")dbSetOrder(1)MsSeek(xFilial("SA4")+SF1->F1_TRANSP)aadd(aTransp,AllTrim(SA4->A4_CGC))aadd(aTransp,SA4->A4_NOME)aadd(aTransp,VldIE(SA4->A4_INSEST))aadd(aTransp,SA4->A4_END)aadd(aTransp,SA4->A4_MUN)aadd(aTransp,Upper(SA4->A4_EST) )aadd(aTransp,SA4->A4_EMAIL )If !Empty(SF1->F1_PLACA)aadd(aVeiculo,SF1->F1_PLACA)aadd(aVeiculo,SA4->A4_EST)aadd(aVeiculo,"")//RNTCEndIfEndIf If SD1->(FieldPos("D1_TESACLA")) > 0cField := "%,D1_TESACLA%" ElsecField := "%%"EndIfIf SD1->(FieldPos("D1_ICMSDIF")) > 0cField := "%,D1_ICMSDIF%"ElsecField := "%%"EndIfdbSelectArea("SD1")dbSetOrder(1)#IFDEF TOPlQuery := .T.cAliasSD1 := GetNextAlias()BeginSql Alias cAliasSD1SELECT D1_FILIAL,D1_DOC,D1_SERIE,D1_FORNECE,D1_LOJA,D1_COD,D1_ITEM,D1_TES,D1_TIPO,D1_NFORI,D1_SERIORI,D1_ITEMORI,D1_CF,D1_QUANT,D1_TOTAL,D1_VALDESC,D1_VALFRE,D1_SEGURO,D1_DESPESA,D1_CODISS,D1_VALISS,D1_VALIPI,D1_ICMSRET,D1_VUNIT,D1_CLASFIS,D1_VALICM,D1_TIPO_NF,D1_PEDIDO,D1_ITEMPC,D1_VALIMP5,D1_VALIMP6,D1_BASEIRR,D1_VALIRR,D1_LOTECTL,D1_NUMLOTE,D1_CUSTO,D1_ORIGLAN,D1_DESCICM,D1_II,D1_FORMUL,D1_VALPS3,D1_ORIGLAN,D1_VALCF3 %Exp:cField%FROM %Table:SD1% SD1WHERESD1.D1_FILIAL = %xFilial:SD1% ANDSD1.D1_SERIE = %Exp:SF1->F1_SERIE% ANDSD1.D1_DOC = %Exp:SF1->F1_DOC% ANDSD1.D1_FORNECE = %Exp:SF1->F1_FORNECE% ANDSD1.D1_LOJA = %Exp:SF1->F1_LOJA% ANDSD1.D1_FORMUL = 'S' ANDSD1.%NotDel%ORDER BY D1_FILIAL,D1_DOC,D1_SERIE,D1_FORNECE,D1_LOJA,D1_ITEM,D1_CODEndSql#ELSEMsSeek(xFilial("SD1")+SF1->F1_DOC+SF1->F1_SERIE+SF1->F1_FORNECE+SF1->F1_LOJA)#ENDIFWhile !Eof() .And. xFilial("SD1") == (cAliasSD1)->D1_FILIAL .And.;SF1->F1_SERIE == (cAliasSD1)->D1_SERIE .And.;SF1->F1_DOC == (cAliasSD1)->D1_DOC .And.;SF1->F1_FORNECE == (cAliasSD1)->D1_FORNECE .And.;SF1->F1_LOJA == (cAliasSD1)->D1_LOJAIf SF1->(FieldPos("F1_MENNOTA"))>0If !AllTrim(SF1->F1_MENNOTA) $ cMensCliIf Len(cMensCli) > 0 .And. SubStr(cMensCli, Len(cMensCli), 1) " "cMensCli += " "EndIfcMensCli += AllTrim(SF1->F1_MENNOTA)EndIfEndIfIf SF1->(FieldPos("F1_MENPAD"))>0If !Empty(SF1->F1_MENPAD) .And. !AllTrim(FORMULA(SF1->F1_MENPAD)) $ cMensFisIf Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " "cMensFis += " "EndIfcMensFis += AllTrim(FORMULA(SF1->F1_MENPAD))EndIfEndIf//Tratamento para nota sobre Cupom DbSelectArea("SFT") DbSetOrder(1) IF SFT->(DbSeek(xFilial("SFT")+"E"+(cAliasSD1)->(D1_SERIE+D1_DOC+D1_FORNECE+D1_LOJA)))IF AllTrim(SFT->FT_OBSERV) " " .AND.(cAliasSD1)->D1_ORIGLAN=="LO"If !Alltrim(SFT->FT_OBSERV) $ Alltrim(cMensCli) cMensCli +=" " + AllTrim(SFT->FT_OBSERV)EndIf EndIf EndIFdbSelectArea("SF4")dbSetOrder(1)If SF1->(FieldPos("F1_STATUS"))>0 .And.SD1->(FieldPos("D1_TESACLA"))>0 .And. SF1->F1_STATUS='C' MsSeek(xFilial("SF4")+(cAliasSD1)->D1_TESACLA)Else MsSeek(xFilial("SF4")+(cAliasSD1)->D1_TES)EndIfIf !lNatOperIf Empty(cNatOper)cNatOper := Alltrim(SF4->F4_TEXTO)ElsecNatOper += Iif(!Alltrim(SF4->F4_TEXTO)$cNatOper,"/ " + SF4->F4_TEXTO,"")Endif ElsedbSelectArea("SX5")dbSetOrder(1)dbSeek(xFilial("SX5")+"13"+SF4->F4_CF)If Empty(cNatOper)cNatOper := AllTrim(SubStr(SX5->X5_DESCRI,1,55))ElsecNatOper += Iif(!AllTrim(SubStr(SX5->X5_DESCRI,1,55)) $ cNatOper, "/ " + AllTrim(SubStr(SX5->X5_DESCRI,1,55)), "") EndIf EndIf If SF4->(FieldPos("F4_BASEICM"))>0 nRedBC := IiF(SF4->F4_BASEICM>0,IiF(SF4->F4_BASEICM == 100,SF4->F4_BASEICM,IiF(SF4->F4_BASEICM > 100,0,100-SF4->F4_BASEICM)),SF4->F4_BASEICM) cCST := SF4->F4_SITTRIB Endif //Operao com diferimento parcial de 66,66% do RICMS/PR para importao lDifParc := .F. If (SF4->(FieldPos("F4_PICMDIF"))>0 .And. "66.66" $ Alltrim(Str(SF4->F4_PICMDIF)) ) ; .And. (SF4->(FieldPos("F4_ICMSDIF"))>0 .And. SF4->F4_ICMSDIF "2") ; .And. (SubStr(SM0->M0_CODMUN,1,2)=='41' .And. SubStr((cAliasSD1)->D1_CF,1,1) == '3') lDifParc := .T. EndIf If ((cAliasSD1)->D1_VALICM > 0 .And. (cAliasSD1)->D1_ICMSDIF > 0 ) .And. lDifParc nValIcmDev += (cAliasSD1)->D1_VALICM //Valor total do ICMS devido nValIcmDif += (cAliasSD1)->D1_ICMSDIF //Valor total do ICMS diferido EndIf //Tratamento para o campo F4_FORMULA,onde atraves do parametro MV_NFEMSF4 se determina se o conteudo da formula devera compor a mensagem do cliente(="C") ou do fisco(="F").If (cAliasSD1)->D1_FORMUL=="S"If !Empty(SF4->F4_FORMULA) .And. Formula(SF4->F4_FORMULA) NIL .And. ( ( cMVNFEMSF4=="C" .And. !AllTrim(Formula(SF4->F4_FORMULA)) $ cMensCli ) .Or. (cMVNFEMSF4=="F" .And. !AllTrim(Formula(SF4->F4_FORMULA))$cMensFis) )If cMVNFEMSF4=="C"If Len(cMensCli) > 0 .And. SubStr(cMensCli, Len(cMensCli), 1) " "cMensCli += " "EndIfcMensCli +=SF4->(Formula(F4_FORMULA))ElseIf cMVNFEMSF4=="F"If Len(cMensFis) > 0 .And. SubStr(cMensFis, Len(cMensFis), 1) " "cMensFis += " "EndIfcMensFis +=SF4->(Formula(F4_FORMULA))EndIfEndIfEndIf ////Verifica as notas vinculadas //If !Empty((cAliasSD1)->D1_NFORI)aOldReg := SD1->(GetArea())// Realiza o backup do order e recno da SF1nOrderSF1 := SF1->( indexOrd() )nRecnoSF1 := SF1->( recno() )dbSelectArea("SD1")dbSetOrder(1)If ((cAliasSD1)->D1_TIPO) $ "NC" // Tratamento para notas de entrada normais e complementares buscar o fornecedor original corretamentecSeekD1 := (cAliasSD1)->D1_NFORI+(cAliasSD1)->D1_SERIORI+(cAliasSD1)->D1_FORNECE+(cAliasSD1)->D1_LOJA+(cAliasSD1)->D1_COD+(cAliasSD1)->D1_ITEMORIElsecSeekD1 := (cAliasSD1)->D1_NFORI+(cAliasSD1)->D1_SERIORIEndIf//Alterado a chave de busca completa devido ao procedimento de complemento de notas de devolucao de VENDA.//If MsSeek(xFilial("SD1")+(cAliasSD1)->D1_NFORI+(cAliasSD1)->D1_SERIORI)+(cAliasSD1)->D1_FORNECE+(cAliasSD1)->D1_LOJA+(cAliasSD1)->D1_COD+(cAliasSD1)->D1_ITEMORI)If MsSeek(xFilial("SD1")+cSeekD1)SF1->( dbSetOrder( 1 ) )SF1->( msSeek( xFilial( "SF1" ) + SD1->D1_DOC + SD1->D1_SERIE + SD1->D1_FORNECE + SD1->D1_LOJA + SD1->D1_TIPO ) )lSeekOk := .T.If SD1->D1_TIPO $ "DB"dbSelectArea("SA1")dbSetOrder(1)MsSeek(xFilial("SA1")+SD1->D1_FORNECE+SD1->D1_LOJA)ElsedbSelectArea("SA2")d