Função: xFisRetFCP(cVerNFE, cAls, cCampo, cArred, nCasasDec) Parâmetros: Variável | Tipo | Descrição | Opções | Exemplo | Padrão |
---|
cVerNFE | C | Versão da NFE |
| xFisRetFCP("4.0") |
| cAls | C | Alias da tabela |
| xFisRetFCP(,"CD2") |
| cCampo | C | Campo para consulta e retorno do valor |
| xFisRetFCP(,,"CD2_PFCP") |
| cArred | C | Opções de arredondamento | 1 - Não arredonda; 2 - Arredonda; 3 - Trunca | xFisRetFCP(,,,"1") | Utiliza o parâmetro MV_RNDICM. Se .T. irá arredondar, se .F. irá truncar. | nCasasDec | N | Quantidade de casas decimais |
| xFisRetFCP(,,,,2) | 2 |
Utilizando para retorno das tags: Tag | Exemplo de uso |
---|
vICMSOpvICMSDif | xFisRetFCP('4.0','SFT','FT_ICMSDIF',"2") | vICMSOp | xFisRetFCP('4.0','SFT','FT_VOPDIF',"2") | vFCP | xFisRetFCP('4.0','CD2','CD2_VFCP',"2") | pFCP | xFisRetFCP('4.0','CD2','CD2_PFCP',"2") | vBCFCP | xFisRetFCP('4.0','CD2','CD2_BFCP',"2") | vICMS | xFisRetFCP('4.0','CD2','CD2_VLTRIB',"2") | pDif | xFisRetFCP('4.0','CD2','CD2_PICMDF',"2") | vBC | xFisRetFCP('4.0','CD2','CD2_BC',"2") | pICMS | xFisRetFCP('4.0','CD2','CD2_ALIQ',"2") |
Importante: O uso da função depende do pré-posicionamento nas tabelas ao qual se deseja passar o Alias. Exemplo: Para uso dos campos das tabelas CD2 ou SFT, deve estar posicionado no registro para consumo da função. Código: User function MeuTeste() Local cDoc := "000000007','000000005','000000006" Local cSerie := "199" Local cCli := "RJ0001" Local cLoja := "01"
//////INCLUSAO DE CAMPOS NA QUERY//////////// cField := "%" If SD1->(FieldPos("D1_ICMSDIF")) > 0 cField += ",D1_ICMSDIF"
EndIf
If SD1->(FieldPos("D1_FILORI")) > 0 cField += ",D1_FILORI" EndIf
If SD1->(FieldPos("D1_DESCZFR")) > 0 cField += ",D1_DESCZFR" EndIf
If SD1->(FieldPos("D1_DESCZFP")) > 0 cField += ",D1_DESCZFP" EndIf
If SD1->(FieldPos("D1_DESCZFC")) > 0 cField += ",D1_DESCZFC" EndIf If SD1->(FieldPos("D1_GRPCST"))<>0 //Grupo de tributação de ipi cField +=",D1_GRPCST" EndIf
If SD1->( ColumnPos('D1_AFRMIMP') ) > 0 //Campo específico para despesa de importação cField +=",D1_AFRMIMP" EndIf
If SD1->( ColumnPos('D1_VOPDIF') ) > 0 cField +=",D1_VOPDIF" EndIf
cField += "%"
dbSelectArea("SD1") dbSetOrder(1)
lQuery := .T. cAliasSD1 := GetNextAlias() BeginSql Alias cAliasSD1 SELECT 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,D1_TESACLA,D1_IDENTB6,D1_PICM,D1_DESC %Exp:cField% FROM %Table:SD1% SD1 WHERE SD1.D1_FILIAL = %xFilial:SD1% AND SD1.D1_SERIE = %Exp:cSerie% AND SD1.D1_DOC IN (%Exp:cDoc%) AND SD1.D1_FORNECE = %Exp:cCli% AND SD1.D1_LOJA = %Exp:cLoja% AND SD1.%NotDel% ORDER BY D1_FILIAL,D1_DOC,D1_SERIE,D1_FORNECE,D1_LOJA,D1_ITEM,D1_COD EndSql
DbSelectArea("SF1") DbSetOrder(1)
While !(cAliasSD1)->(Eof())
//Posiciona novente na SF1 do documento que esta sendo processado SF1->(MsSeek(xFilial("SF1")+(cAliasSD1)->(D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA+D1_TIPO))) DbSelectArea("SFT") DbSetOrder(1) SFT->(DbSeek(xFilial("SFT")+"E"+(cAliasSD1)->(D1_SERIE+D1_DOC+D1_FORNECE+D1_LOJA+PadR(D1_ITEM,TamSx3("FT_ITEM")[1])+D1_COD))) CD2->(DbSetOrder(2)) CD2->(MsSeek(xFilial("CD2")+"E"+SF1->F1_SERIE+SF1->F1_DOC+SF1->F1_FORNECE+SF1->F1_LOJA+PadR((cAliasSD1)->D1_ITEM,4)+(cAliasSD1)->D1_COD)) While !CD2->(Eof()) .And. xFilial("CD2") == CD2->CD2_FILIAL .And.; "E" == CD2->CD2_TPMOV .And.; SF1->F1_SERIE == CD2->CD2_SERIE .And.; SF1->F1_DOC == CD2->CD2_DOC .And.; SF1->F1_FORNECE == IIF(!(cAliasSD1)->D1_TIPO $ "DB",CD2->CD2_CODFOR,CD2->CD2_CODCLI) .And.; SF1->F1_LOJA == IIF(!(cAliasSD1)->D1_TIPO $ "DB",CD2->CD2_LOJFOR,CD2->CD2_LOJCLI) .And.; (cAliasSD1)->D1_ITEM == SubStr(CD2->CD2_ITEM,1,Len((cAliasSD1)->D1_ITEM)) .And.; (cAliasSD1)->D1_COD == CD2->CD2_CODPRO alert("Nota: "+(cAliasSD1)->D1_DOC+CRLF+; "Valor Base: "+cvaltochar(CD2->CD2_BC)+CRLF+; "% Diferimento: "+cvaltochar(CD2->CD2_PICMDF)+CRLF+; "% FECP: "+cvaltochar(CD2->CD2_PFCP)+CRLF+; "CD2_VLTRIB / vICMS : "+cvaltochar(xFisRetFCP('4.0','CD2','CD2_VLTRIB',"2"))+CRLF+; "CD2_BFCP / vBCFCP : "+cvaltochar(xFisRetFCP('4.0','CD2','CD2_BFCP',"2"))+CRLF+; "CD2_PFCP / pFCP : "+cvaltochar(xFisRetFCP('4.0','CD2','CD2_PFCP',"2"))+CRLF+; "CD2_VFCP / vFCP : "+cvaltochar(xFisRetFCP('4.0','CD2','CD2_VFCP',"2"))+CRLF+; "FT_VOPDIF / vICMSOp : "+cvaltochar(xFisRetFCP('4.0','SFT','FT_VOPDIF',"2"))+CRLF+; "FT_ICMSDIF / vICMSDif : "+cvaltochar(xFisRetFCP('4.0','SFT','FT_ICMSDIF',"2")))
CD2->(DbSkip()) Enddo
(cAliasSD1)->(DbSkip()) Enddo
Return |