Código: Selecionar todos
************************************************************************************************************************************************************************************************************************
METHOD CALCULA_IPI( oQuery1 ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL CXml:="" ;
if ! empty(oQuery1:Fields( "IPI_CST" ):Value)
CXml := '<IPI>'
CXml += XmlTag( 'cEnq', STRZERO(oQuery1:Fields( "IPI_ENQ" ):Value,3,0) )
IF oQuery1:Fields( "IPI_Aliq" ):Value # 0.00
cXml += '<IPI_Aliq>'
CXml += XmlTag( 'CST',STRZERO(oQuery1:Fields( "IPI_CST" ):Value,3,0) )
cXml += XmlTag( 'vBC',ltrim(str(oQuery1:Fields( "IPI_vBc" ):Value,14,2)) )
cXml += XmlTag( 'pIPI',ltrim(str(oQuery1:Fields( "IPI_Aliq" ):Value,7,4)) )
cXml += XmlTag( 'vIPI',ltrim(str(oQuery1:Fields( "IPI_vIPI" ):Value,14,2)) )
cXml += '</IPI_Aliq>'
ELSE
IF oQuery1:Fields( "IPI_CST" ):Value = 99
cXml += '<IPITrib>'
cXml += XmlTag( 'CST',"99" )
cXml += XmlTag( 'vBC','0.00' )
cXml += XmlTag( 'pIPI','0.00' )
cXml += XmlTag( 'vIPI','0.00' )
cXml += '</IPITrib>'
ELSE
cXml += '<IPINT>'
CXml += XmlTag( 'CST',STRZERO(oQuery1:Fields( "IPI_CST" ):Value,3,0) )
cXml += '</IPINT>'
ENDIF
ENDIF
CXml += '</IPI>'
ENDIF
RETURN CXml
************************************************************************************************************************************************************************************************************************
METHOD CALCULA_PIS( oQuery1 ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL CXml:="" ;
IF ::UFEmitente != ::UFDestinatario && VENDA INTER-ESTADUAL ( UF DIFERENTES)
IF oQuery1:Fields( "PIS_pPIS" ):Value # 0.00
cXml += '<PIS>'
cXml += '<PISAliq>'
cXml += XmlTag( 'CST', STRZERO(oQuery1:Fields( "PIS_ST" ):Value,2,0) )
cXml += XmlTag( 'vBC',ltrim(str(oQuery1:Fields( "PIS_vBc" ):Value,14,2)) )
cXml += XmlTag( 'pPIS',ltrim(str(oQuery1:Fields( "PIS_pPIS" ):Value,7,4)) )
cXml += XmlTag( 'vPIS',ltrim(str(oQuery1:Fields( "PIS_vPIS" ):Value,14,2)) )
::vPIS += oQuery1:Fields( "PIS_vPIS" ):Value
cXml += '</PISAliq>'
cXml += '</PIS>'
ELSE
cXml := '<PIS>'
cXml += '<PISNT>'
cXml += XmlTag( 'CST', STRZERO(oQuery1:Fields( "PIS_st" ):Value,2,0) )
cXml += '</PISNT>'
cXml += '</PIS>'
ENDIF
ELSE
IF oQuery1:Fields( "PIS_pPIS" ):Value # 0.00
cXml := '<PIS>'
cXml += '<PISAliq>'
cXml += XmlTag( 'CST',STRZERO(oQuery1:Fields( "PIS_ST" ):Value,2,0) )
cXml += XmlTag( 'vBC',ltrim(str(oQuery1:Fields( "PIS_vBc" ):Value,14,2)) )
cXml += XmlTag( 'pPIS',ltrim(str(oQuery1:Fields( "PIS_pPIS" ):Value,7,4)) )
cXml += XmlTag( 'vPIS',ltrim(str(oQuery1:Fields( "PIS_vPIS" ):Value,14,2)) )
::vPIS += oQuery1:Fields( "PIS_vPIS" ):Value
cXml += '</PISAliq>'
cXml += '</PIS>'
ELSE
cXml := '<PIS>'
IF oQuery1:Fields( "PIS_ST" ):Value = 99
cXml += '<PISOutr>'
cXml += XmlTag( 'CST',"99" )
cXml += XmlTag( 'vBC','0.00' )
cXml += XmlTag( 'pPIS','0.00' )
cXml += XmlTag( 'vPIS','0.00' )
cXml += '</PISOutr>'
ELSE
cXml += '<PISAliq>'
cXml += XmlTag( 'CST', STRZERO(oQuery1:Fields( "PIS_st" ):Value,2,0) )
cXml += XmlTag( 'vBC','0.00' )
cXml += XmlTag( 'pPIS','0.00' )
cXml += XmlTag( 'vPIS','0.00' )
cXml += '</PISAliq>'
ENDIF
cXml += '</PIS>'
ENDIF
ENDIF
RETURN CXml
************************************************************************************************************************************************************************************************************************
METHOD CALCULA_COFINS( oQuery1 ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL CXml:="" ;
IF ::UFEmitente != ::UFDestinatario && VENDA INTER-ESTADUAL ( UF DIFERENTES)
IF oQuery1:Fields( "COF_pCOFINS" ):Value # 0.00
cXml += '<COFINS>'
cXml += '<COFINSAliq>'
cXml += XmlTag( 'CST', STRZERO(oQuery1:Fields( "COF_ST" ):Value,2,0) )
cXml += XmlTag( 'vBC',ltrim(str(oQuery1:Fields( "COF_vBc" ):Value,14,2)) )
cXml += XmlTag( 'pCOFINS',ltrim(str(oQuery1:Fields( "COF_pCOFINS" ):Value,7,4)) )
cXml += XmlTag( 'vCOFINS',ltrim(str(oQuery1:Fields( "COF_vCOFINS" ):Value,14,2)) )
::vCOFINS += oQuery1:Fields( "COF_vCOFINS" ):Value
cXml += '</COFINSAliq>'
cXml += '</COFINS>'
ELSE
cXml := '<COFINS>'
cXml += '<COFINSNT>'
cXml += XmlTag( 'CST', STRZERO(oQuery1:Fields( "COF_st" ):Value,2,0) )
cXml += '</COFINSNT>'
cXml += '</COFINS>'
ENDIF
else && VENDA LOCAL ( MESMA UF)
IF oQuery1:Fields( "COF_pCOFINS" ):Value # 0.00
cXml := '<COFINS>'
cXml += '<COFINSAliq>'
cXml += XmlTag( 'CST', STRZERO(oQuery1:Fields( "COF_ST" ):Value,2,0) )
cXml += XmlTag( 'vBC',ltrim(str(oQuery1:Fields( "COF_vBc" ):Value,14,2)) )
cXml += XmlTag( 'pCOFINS',ltrim(str(oQuery1:Fields( "COF_pCOFINS" ):Value,7,4)) )
cXml += XmlTag( 'vCOFINS',ltrim(str(oQuery1:Fields( "COF_vCOFINS" ):Value,14,2)) )
::vCOFINS += oQuery1:Fields( "COF_vCOFINS" ):Value
cXml += '</COFINSAliq>'
cXml += '</COFINS>'
ELSE
cXml := '<COFINS>'
IF oQuery1:Fields( "COF_ST" ):Value = 99
cXml += '<COFINSOutr>'
cXml += XmlTag( 'CST', '99' )
cXml += XmlTag( 'vBC','0.00' )
cXml += XmlTag( 'pCOFINS','0.00' )
cXml += XmlTag( 'vCOFINS','0.00' )
cXml += '</COFINSOutr>'
ELSE
cXml += '<COFINSAliq>'
cXml += XmlTag( 'CST', STRZERO(oQuery1:Fields( "COF_st" ):Value,2,0) )
cXml += XmlTag( 'vBC','0.00' )
cXml += XmlTag( 'pCOFINS','0.00' )
cXml += XmlTag( 'vCOFINS','0.00' )
cXml += '</COFINSAliq>'
ENDIF
cXml += '</COFINS>'
ENDIF
ENDIF
RETURN CXml
************************************************************************************************************************************************************************************************************************
METHOD CALCULA_PARTILHA_FCP( oQuery1 ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cXml:="";
, pAliquotaFCP ;
, vBCUFDest ;
, UFEmitente ;
, UfDestinatario ;
, pICMSUFDest ;
, pICMSInter ;
, pICMSOrigemPart ;
, pICMSDestinoPart ;
, vDIFAL ;
, vFCPUFDest ;
, vICMSUFDest ;
, vICMSUFRemet
if ::C_CRT == "3"
IF ::UFEmitente != ::UFDestinatario
if ::e_indie = '9'
pAliquotaFCP := (::AliquotaFCP( oQuery1:Fields( "UfDestinatario" ):Value ))
vBCUFDest := oQuery1:Fields( "vProd" ):Value - oQuery1:Fields( "vDesc" ):Value
UFEmitente := oQuery1:Fields( "UFEmitente" ):Value
UfDestinatario := oQuery1:Fields( "UfDestinatario" ):Value
pICMSUFDest := ::AliquotaICMS( UfDestinatario, UfDestinatario)
pICMSInter := ::AliquotaICMS( UFEmitente, UfDestinatario)
pICMSOrigemPart := 0.00
pICMSDestinoPart := 100.00
vDIFAL := (vBCUFDest * ((pICMSUFDest - pICMSInter )/100))
vFCPUFDest := (vBCUFDest * (pAliquotaFCP / 100))
vICMSUFDest := (vDIFAL * (pICMSDestinoPart / 100))
vICMSUFRemet := (vDIFAL * (pICMSOrigemPart / 100))
cXml += '<ICMSUFDest>'
cXml += XmlTag('vBCUFDest', transform(vBCUFDest ,'@B 99999999.99'))
cXml += XmlTag('pFCPUFDest', transform(pAliquotaFCP,'@B 99999999.99'))
cXml += XmlTag('pICMSUFDest', transform(pICMSUFDest,'@B 99999999.99'))
cXml += XmlTag('pICMSInter', transform(pICMSInter,'@B 99999999.99'))
cXml += XmlTag('pICMSInterPart', transform(pICMSDestinoPart,'@B 99999999.99'))
cXml += XmlTag('vFCPUFDest', transform(vFCPUFDest,'@B 99999999.99'))
cXml += XmlTag('vICMSUFDest', transform(vICMSUFDest,'@B 99999999.99'))
cXml += XmlTag('vICMSUFRemet', transform(vICMSUFRemet,'@B 99999999.99'))
cXml += '</ICMSUFDest>'
::TvFCPUFDest += oQuery1:Fields( "vFCPUFDest" ):Value
::TvICMSUFDest += oQuery1:Fields( "vICMSUFDest" ):Value
::TvICMSUFRemet += oQuery1:Fields( "vICMSUFRemet" ):Value
endif
endif
ENDIF
RETURN cXml
************************************************************************************************************************************************************************************************************************
METHOD TOTALIZA( ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cXml;
CXml := '<total>'
CXml += '<ICMSTot>'
CXml += XmlTag( 'vBC',LTRIM(str(::Vbc,14,2)) )
CXml += XmlTag( 'vICMS',LTRIM(str(::vICMS,14,2)) )
CXml += XmlTag( 'vICMSDeson',LTRIM(str(::vICMSDeson,14,2)) )
if ::C_CRT == "3"
CXml += XmlTag( 'vFCPUFDest',ltrim(str(ROUND(::TvFCPUFDest,2),14,2)) )
CXml += XmlTag( 'vICMSUFDest',ltrim(str(ROUND(::TvICMSUFDest,2),14,2)) )
CXml += XmlTag( 'vICMSUFRemet',ltrim(str(ROUND(::TvICMSUFRemet,2),14,2)) )
ENDIF
CXml += XmlTag( 'vFCP',transform(::vFCP,'@B 99999999.99'))
CXml += XmlTag( 'vBCST',transform(::vBCST,'@B 99999999.99'))
CXml += XmlTag( 'vST',transform(::vST,'@B 99999999.99'))
CXml += XmlTag( 'vFCPST',transform(::vFCPST,'@B 99999999.99'))
CXml += XmlTag( 'vFCPSTRet',transform(::vFCPSTRet,'@B 99999999.99'))
CXml += XmlTag( 'vProd',transform(::vPROD,'@B 99999999.99'))
CXml += XmlTag( 'vFrete',transform(::vFrete,'@B 99999999.99'))
CXml += XmlTag( 'vSeg',transform(::vSeg,'@B 99999999.99'))
CXml += XmlTag( 'vDesc',transform(::vDesc ,'@B 99999999.99'))
CXml += XmlTag( 'vII',transform(::vII,'@B 99999999.99'))
CXml += XmlTag( 'vIPI',transform(::vIPI,'@B 99999999.99'))
CXml += XmlTag( 'vIPIDevol',transform(::vIPIDevol,'@B 99999999.99'))
CXml += XmlTag( 'vPIS',transform(::vPIS,'@B 99999999.99'))
CXml += XmlTag( 'vCOFINS',transform(::vCOFINS,'@B 99999999.99') )
CXml += XmlTag( 'vOutro',transform(::vOutro,'@B 99999999.99'))
CXml += XmlTag( 'vNF',transform(::W_vNF,'@B 99999999.99'))
CXml += XmlTag( 'vTotTrib',transform( (::vTotalFederal + ::vTotalEstadual),'@B 99999999.99'))
CXml += '</ICMSTot>'
CXml += '</total>'
RETURN CXml
************************************************************************************************************************************************************************************************************************
METHOD TRANSPORTE( ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cXml;
cXml := '<transp>'
CXml += XmlTag( 'modFrete','9' )
CXml += '</transp>'
/* cXml := '<transp>
cXml := XmlTag( '<modFrete>', '0')
cXml := '<transporta>'
cXml := XmlTag( '<CNPJ>', '78261252000242')
cXml := XmlTag( '<xNome>', 'TRANSPORTES BOTUVERA LTDA')
cXml := XmlTag( '<IE>', '133302580')
cXml := XmlTag( '<xEnder>', 'ROD. BR 163 S/N DISTRITO INDUSTRIAL VETORASSO')
cXml := XmlTag( '<xMun>', 'RONDONOPOLIS')
cXml := XmlTag( '<UF>', 'MT')
cXml := '</transporta>'
cXml := '<vol>'
cXml := XmlTag( '<qVol>', '1650')
cXml := XmlTag( '<pesoL>', '49500.000' )
cXml := XmlTag( '<pesoB>', '49500.000' )
cXml := '</vol>'
cXml := '</transp>
*/
RETURN cXml
************************************************************************************************************************************************************************************************************************
METHOD COBRANCA( ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cFat:="";
, cDup:="";
, vOrig:=0.00;
, cQuery1;
, oQuery1;
cQuery1:="SELECT "
cQuery1+="pedidospagamento.PGTO_Id "
cQuery1+="FROM pedidospagamento "
cQuery1+="WHERE pedidospagamento.PEDIDOS_ID = '" + STRZERO(::nPedido_Id,11,0) + "' AND pedidospagamento.TIPPGTO_ID = 15 "
oQuery1:= CONECCOESCLASS():ExecuteSQL(::oServer, cQuery1)
if ! oQuery1:Eof()
cQuery1:="SELECT "
cQuery1+="receber.DOCUMENTO, "
cQuery1+="receber.PARCELA, "
cQuery1+="receber.DATVEN, "
cQuery1+="receber.VALOR "
cQuery1+="FROM receber "
cQuery1+="WHERE receber.CLIENTES_ID = '" + strzero(::Cliente_Id,11,0) + "' AND receber.DOCUMENTO = '" + STRZERO(::nPedido_Id,11,0) + "' "
oQuery1:= CONECCOESCLASS():ExecuteSQL(::oServer, cQuery1)
if ! oQuery1:Eof()
do while ! oQuery1:Eof()
cDup += '<dup>'
cDup += XmlTag( 'nDup', STRZERO(oQuery1:Fields( "PARCELA" ):Value,3,0) )
cDup += XmlTag( 'dVenc', HB_DTOC(oQuery1:Fields( "DATVEN" ):Value, "DD-MM-YYYY" ) )
cDup += XmlTag( 'vDup', ltrim(str(oQuery1:Fields( "VALOR" ):Value, 14,2) ) )
cDup += '</dup>'
vOrig += oQuery1:Fields( "VALOR" ):Value
oQuery1:MoveNext()
ENDDO
oQuery1:MoveFirst()
cFat += '<fat>'
cFat += XmlTag( 'nFat', ltrim(STR(oQuery1:Fields( "DOCUMENTO" ):Value,11,0 ) ) )
cFat += XmlTag( 'vOrig', ltrim(STR(vOrig) ) )
cFat += XmlTag( 'vDesc', '0' )
cFat += XmlTag( 'vLiq', ltrim(STR(vOrig) ) )
cFat += '</fat>'
endif
ENDIF
RETURN cFat + cDup
************************************************************************************************************************************************************************************************************************
METHOD PAGAMENTO( ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cXml
do case
case ::TIPO_OPERACAO = 40
cXml := ::PAGAMENTO_40()
OTHERWISE
cXml := ::PAGAMENTO_GERAL()
endcase
RETURN cXml
************************************************************************************************************************************************************************************************************************
METHOD PAGAMENTO_GERAL( ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cXml;
, cQuery1;
, oQuery1;
cQuery1:="SELECT "
cQuery1+="pedidospagamento.TIPPGTO_ID, "
cQuery1+="pedidospagamento.CARTAO_ID, "
cQuery1+="pedidospagamento.VALOR, "
cQuery1+="pedidospagamento.TROCO, "
cQuery1+="pedidospagamento.PARCELAS, "
cQuery1+="pedidospagamento.AUTORIZACAO, "
cQuery1+="pedidospagamento.XPAG "
cQuery1+="FROM pedidospagamento "
cQuery1+="LEFT JOIN cartaobandeira ON cartaobandeira.CODIGO = pedidospagamento.CARTAO_ID "
cQuery1+="JOIN formapagamento ON formapagamento.TIPPGTO_Id = pedidospagamento.TIPPGTO_ID "
cQuery1+="WHERE pedidospagamento.PEDIDOS_ID = '" + STRZERO(::nPedido_Id,11,0) + "' "
cQuery1+="ORDER BY pedidospagamento.TIPPGTO_ID "
oQuery1:= CONECCOESCLASS():ExecuteSQL(::oServer, cQuery1)
cXml := '<pag>'
DO WHILE ! oQuery1:Eof()
CXml += '<detPag>'
IF oQuery1:Fields( "PARCELAS" ):Value = 0
CXml += XmlTag( 'indPag','0')
else
CXml += XmlTag( 'indPag','1')
endif
CXml += XmlTag( 'tPag',STRZERO(oQuery1:Fields( "TIPPGTO_ID" ):Value,2,0))
IF ! EMPTY(oQuery1:Fields( "XPAG" ):Value)
CXml += XmlTag( '<xPag>',oQuery1:Fields( "XPAG" ):Value)
ENDIF
CXml += XmlTag( 'vPag',LTRIM(STR(oQuery1:Fields( "VALOR" ):Value,14,2)))
IF oQuery1:Fields( "CARTAO_ID" ):Value != 0
CXml += '<card>'
CXml += XmlTag( 'tpIntegra','2')
CXml += XmlTag( 'tBand',STRZERO(oQuery1:Fields( "CARTAO_ID" ):Value,2,0))
IF oQuery1:Fields( "AUTORIZACAO" ):Value != 0
CXml += XmlTag( 'cAut',STRZERO(oQuery1:Fields( "AUTORIZACAO" ):Value,2,0))
ENDIF
CXml += '</card>'
endif
CXml += '</detPag>'
IF oQuery1:Fields( "TROCO" ):Value != 0
CXml += XmlTag( 'vTroco',LTRIM(STR(oQuery1:Fields( "TROCO" ):Value,14,2)))
endif
oQuery1:MoveNext( )
ENDDO
cXml += '</pag>'
RETURN cXml
************************************************************************************************************************************************************************************************************************
METHOD PAGAMENTO_40( ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cXml;
cXml := '<pag>'
CXml += '<detPag>'
CXml += XmlTag( 'indPag','0')
CXml += XmlTag( 'tPag','90')
CXml += XmlTag( 'vPag','0.00')
CXml += '</detPag>'
cXml += '</pag>'
RETURN cXml
************************************************************************************************************************************************************************************************************************
METHOD INFORMACOES_ADICIONAIS( ) CLASS NotasFiscaisEmissao
************************************************************************************************************************************************************************************************************************
LOCAL cXml;
, cQuery1;
::Z_INFCPL := rtrim(::Z_INFCPL)
::Z_INFCPL := STRTRAN(::Z_INFCPL,"<TRIBFED>",ALLTRIM(str(::vTotalFederal)))
::Z_INFCPL := STRTRAN(::Z_INFCPL,"<TRIBEST>",ALLTRIM(str(::vTotalEstadual)))
cQuery1:="UPDATE danfe SET "
cQuery1+="danfe.Z_INFCPL = '" + ::Z_INFCPL + "', "
cQuery1+="where danfe.PEDIDOS_Id = '" + STRZERO(::nPedido_Id,11,0) + "' "
CONECCOESCLASS():ExecuteSQL(::oServer, cQuery1 )
cXml := '<infAdic>'
// IF oQuery1:Fields( "b_finNFe" ):Value = "4" && DEVOLUÇAO DE MERCADORIA
// CXml += XmlTag('infAdFisco' + rtrim(Memo2) )
// ENDIF
CXml += XmlTag( 'infCpl',::Z_INFCPL )
CXml += '</infAdic>'
CXml += '</infNFe>'
CXml += '</NFe>'
RETURN cXml