Função: ECDImpLivro - Função
Função que importa um arquivo txt e cria o livro Z- Razão Auxiliar, na Central de Escrituração.
ECDImpLivro - Função ( [ cEmp], [ aFils], [ cArqTxt], < cLayout>, < cNumOrdem>, < cNatureza>, < dDataIni>, < dDataFim> ) --> lRet
Nome | Tipo | Descrição | Obrigatório | Referência |
cEmp | Caracter | Empresa Corrente | ||
aFils | Array of Record | Array com as filiais do livro gerado.a sua estrutura deve ser a seguinte:aFils[1][1] := .T.aFils[2][2] := Codigo da Empresa aFils[2][3] := Codigo da FilialaFils[2][4] := Razão Social da EmpresaaFils[2][5] := Razão Social da FilialCaso não seja informado parametro, sera considerada a filial corrente | ||
cArqTxt | Caracter | Caminho do Arquivo Texto.Caso não seja informado, a função irá criar o livro Z apenas com os cadastros | ||
cLayout | Caracter | Layout cadastrado na rotina "Layout Auxiliar" CTBS100 | X | |
cNumOrdem | Caracter | Numero da ordem do livro | X | |
cNatureza | Caracter | Natureza do livro | X | |
dDataIni | Data | Data Inicio da Escrituração | X | |
dDataFim | Data | Data Final da Escrituração | X |
-
lRet(logico)
- Retorna .T. se o livro foi escriturado com sucesso
O registro I555 referente aos TOTAIS NO LIVRO AUXILIAR COM LEIAUTE PARAMETRIZÁVEL não são atendidos pelo Microsiga Protheus sendo que o mesmo tem que ser customizado pelo cliente.
O layout disponibilizado no portal tambem não tem essa tratativa, o mesmo deverá ser ajustado para atender a necessidade do cliente.
Segue um EXEMPLO de como pode ser montado o arquivo de exportação ECD_LIVROZ.XML
No registro I550, substituir pela seguinte instrução:
<register id='I550' description='Detalhes do livro razao auxiliar com leiaute parametrizavel'>
<superior>I500</superior>
<table>TMPCSX</table>
<initiating>
<instruction><![CDATA[ECDQuery("TMPCSX" ,1," SELECT * FROM " + RetSQLTab("CSX") + " WHERE CSX_CODREV = '" + CS0->CS0_CODREV + "' AND " + RetSQLCond("CSX"))]]></instruction>
</initiating>
<lines Delimited='|' NumericNull='F' DecimalPoint=',' DateFormat='DDMMYYYY' DateNull='T' StringNull='T'>
<fields>
<field name='REG' type='C' size='004' dec='0' instruction='"I550"'></field>
<field name='RZ_CONT' type='C' size='000' dec='0' instruction='TMPCSX->CSX_DESCRI'> </field>
</fields>
<count>
<instruction>aTotal[11]++</instruction>
<instruction>aTotal[19]++</instruction>
<instruction>Eval({||cReg := "I550",nScan := aScan(aTotal[15],{|x| x[1] == cReg}),IIf(nScan==0,aadd(aTotal[15],{cReg,1}),aTotal[15][nScan][02]++)})</instruction>
</count>
</lines>
<finishing>
<instruction><![CDATA[ECDQuery("TMPCSX",2)]]></instruction>
</finishing>
</register>
<register id='I555' description='totalizador do livro razao auxiliar com leiaute parametrizavel'>
<superior>I550</superior>
<table>TMPCSY</table>
<initiating>
<instruction><![CDATA[ECDQuery("TMPCSY" ,1," SELECT * FROM " + RetSQLTab("CSY") + " WHERE CSY_CODREV = '" + CS0->CS0_CODREV + "' AND " + RetSQLCond("CSY"))]]></instruction>
</initiating>
<lines Delimited='|' NumericNull='F' DecimalPoint=',' DateFormat='DDMMYYYY' DateNull='T' StringNull='T'>
<fields>
<field name='REG' type='C' size='004' dec='0' instruction='"I550"'></field>
<field name='RZ_CONT' type='C' size='000' dec='0' instruction='TMPCSY->CSY_DESCRI'> </field>
</fields>
<count>
<instruction>aTotal[11]++</instruction>
<instruction>aTotal[19]++</instruction>
<instruction>Eval({||cReg := "I555",nScan := aScan(aTotal[15],{|x| x[1] == cReg}),IIf(nScan==0,aadd(aTotal[15],{cReg,1}),aTotal[15][nScan][02]++)})</instruction>
</count>
</lines>
<finishing>
<instruction><![CDATA[ECDQuery("TMPCSY",2)]]></instruction>
</finishing>
</register>
Ista informação é só um EXEMPLO e não tratam todas as situações do usuario, cabendo ao usuario customizar a forma que deseja quebrar.
User Function ImportaTeste() Local cEmp := cEmpAntLocal cArqTxt := "C:\Arquivo_Intregacao\LAYOUTZ.TXT"Local cLayout := "SPE"Local nNumOrdem:= "00054"Local cNatureza:= "TESTE"Local dDataIni := cTod("01/01/09")Local dDataFim := cTod("31/12/09")ECDImpLivro(cEmp, Nil, cArqTxt , cLayout , nNumOrdem , cNatureza, dDataIni,dDataFim)Return