...
Línea de producto |
---|
...
Linha de Produto: | Microsiga Protheus® |
---|---|
Segmento: | ServiçosServicios |
Módulo: | Fiscal |
02. DESCRIÇÃODESCRIPCIÓN
Ponto Punto de Entrada para inclusão dos entrada para inclusión de los registros 1300, 1310, 1320, 1350, 1360 e y 1370.
Panorama geralgeneral:
Registro apresentado pelos contribuintes do ramo varejista de combustíveis (postos de combustíveis), refere-se
à movimentação diária de combustíveis, havendo apenas um presentado por los contribuyentes del ramo minorista de combustibles (estaciones de servicio de combustibles), se refiere al movimiento diario de combustibles, habiendo solamente un registro por tipo de combustível e por data do
fechamento da movimentação combustible y por fecha del cierre del movimiento (campo COD_ITEM e y campo DT_FECH), independente de ocorrerem intervenções.
Não pode haver mais de um registro com o mesmo código de combustível e mesma data de fechamentoindependientemente de que ocurran intervenciones.
No puede haber más de un registro con el mismo código de combustible y la misma fecha de cierre.
...
...
Nome Nombre | Tipo | Descrição Descripción |
---|---|---|
PARAMIXB | Array of Record | Array com dados de processamento com con datos del procesamiento con 5 elementos [1] = Alias da tabela; de la tabla. [2] = Data de;De Fecha. [3] = Data Até;A Fecha. [4] = Array do del registro 0200;. [5] = Array do del registro 0190;. |
...
Nome Nombre | Tipo | Descrição Descripción |
---|---|---|
Array of Record | Retorna Devuelve Array reg0200 com produtos con productos utilizados Importante: Quando ponto Si el punto de entrada é executado se ejecuta, el Array reg0200 já possui todos produtos já processados no SPED FISCAL, deve apenas adicionar novos produtos no array reg0200tiene todos los productos procesados en el SPED FISCAL, solamente debe agregar nuevos productos en el array reg0200 Después de la ejecución del punto SPED1300 se imprimirá el Array reg0200 de acuerdo con la devolución del punto Após execução do ponto SPED1300 será impresso Array reg0200 conforme retornado do ponto de entrada. |
...
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#include "rwmake.ch" #include "Topconn.ch" #include "protheus.ch" User Function SPED1300() Local cAlias := (ParamIxb[1]) Local dDataDe := (ParamIxb[2]) Local dDataAte := (ParamIxb[3]) Local aReg0200 := (ParamIxb[4]) Local aReg0190 := (ParamIxb[5]) Local aReg1300 := {} Local aReg1310 := {} Local aReg1320 := {} //FunçãoFunción responsable responsavelpor pelala geraçãogeneración dodel blocobloque 1300, movimentaçãomovimiento diariadiario de combustivelcombustible nPos1300 := Reg1300P(cAlias,dDataDe,dDataAte,@aReg1300) //FunçãoFunción MovCom, esta elaserá responsable serapor responsavella pelageneración geraçãode doslos blocosbloques 1310 ey 1320, ondedonde oel registro 1310 ées ael movimentaçãomovimiento diariadiario de combustivelcombustible por tanque //Registro 1320 volumevolumen de vendaventa MovCom(cAlias,dDataDe,dDataAte,nPos1300,aReg1300,@aReg1310,@aReg1320) //FunçãoFunción Reg1350P, responsávelresponsable por inseririncluir información informaçõesde daslas bombas ey seussus respectivos lacres e também dos bicos, así como también de las pistolas. //Esta funçãofunción nãono deverádebe ser chamadaactivada emen loop Reg1350P(cAlias,dDataDe,dDataAte,@aReg0200,@aReg0190) //Após a geração dosDespués de la generación de los arrays comcon todatodo ael movimentaçãomovimiento dodel periodoperíodo seráse chamadoactivará ala funçãofunción SPEDRegs para agregarlos adiciona-loscorrectamente corretamenteen noel arquivoarchivo dodel SPED //Esta funçãofunción nãono deverádebe ser chamadaactivada emen loop SPEDRegs(cAlias,{aReg1300,aReg1310,aReg1320}) Return(aReg0200) ////////// Registro 1300 MOVIMENTACAOMOVIMIENTO DIARIADIARIO DE COMBUSTIVEISCOMBUSTIBLES //////////// Static Function Reg1300P(cAlias,dDataDe,dDataAte,aReg1300) Local lConcFil := SuperGetMv("MV_COFLSPD",,.T.) //SomaSuma filialsucursal aoal codigocódigo dodel produtoproducto Local cProd := PadR(Alltrim("001"+ Iif(lConcFil,xFilial("SB1"),"")),TamSX3("B1_COD")[1]) Local nPos := 0 Local dData := ctod("25/08/2022") aAdd(aReg1300, {}) nPos:= Len(aReg1300) aAdd(aReg1300[nPos], "1300" ) //01 - REG aAdd(aReg1300[nPos], cProd ) //02 - COD_ITEM aAdd(aReg1300[nPos], dData ) //03 - DT_FECH aAdd(aReg1300[nPos], {330.000,3} ) //04 - ESTQ_ABERT aAdd(aReg1300[nPos], 0 ) //05 - VOL_ENTR aAdd(aReg1300[nPos], {330.000,3} ) //00 - VOL_DISP aAdd(aReg1300[nPos], {150.000,3} ) //00 - VOL_SAIDAS aAdd(aReg1300[nPos], {180.000,3} ) //00 - ESTQ_ESCR aAdd(aReg1300[nPos], 0 ) //00 - VAL_AJ_PERDA aAdd(aReg1300[nPos], 0 ) //00 - VAL_AJ_GANHO aAdd(aReg1300[nPos], {180.000,3} ) //00 - FECH_FISICO Return(nPos) Static Function MovCom(cAlias,dDataDe,dDataAte,nPos1300,aReg1300,aReg1310,aReg1320) Local nRectan := 0 Local nPos1310 := 0 Local nCont := 0 Local ncontBic := 0 Default aReg1310 := {} Default aReg1320 := {} For nCont := 1 To 3 // Simulando 3 tanques nRectan := 126 + nCont nPos1310 := SPED1310(cAlias,dDataDe,dDataAte,nRectan,@aReg1310,nPos1300) //1310 deverádebe sergenerarse geradosolamente apenas umun registro diario por tanque For ncontBic := 1 To 2 // Simulando 2 BicosPistolas SPED1320(cAlias,dDataDe,dDataAte,@aReg1320,nPos1310, ncontBic) //1320 deverádebe sergenerarse gerado umun registro diario por bicopistola Next Next Return() //////////// Registro 1310 MOVIMENTACAOMOVIMIENTO DIARIADIARIO DE COMBUSTIVEISCOMBUSTIBLES POR TANQUE///////////////// Static Function SPED1310(cAlias,dDataDe,dDataAte,nRectan,aReg1310,nPos1300) Local nPos := 0 Local cTanque := STRzero(nRectan,3) aAdd(aReg1310, {}) nPos:= Len(aReg1310) aAdd(aReg1310[nPos], nPos1300 ) //00 - RELACAO aAdd(aReg1310[nPos], "1310" ) //01 - REG aAdd(aReg1310[nPos], cTanque ) //02 - NUM_TANQUE aAdd(aReg1310[nPos], {330.000,3} ) //03 - ESTQ_ABERT aAdd(aReg1310[nPos], {0,3} ) //04 - VOL_ENTR aAdd(aReg1310[nPos], {330.000,3} ) //05 - VOL_DISP aAdd(aReg1310[nPos], { 50.000,3} ) //06 - VOL_SAIDAS aAdd(aReg1310[nPos], {280.000,3} ) //07 - ESTQ_ESCR aAdd(aReg1310[nPos], 0 ) //08 - VAL_AJ_PERDA aAdd(aReg1310[nPos], 0 ) //09 - VAL_AJ_GANHO aAdd(aReg1310[nPos], {280.000,3} ) //10 - FECH_FISICO Return(nPos) ///////////////// Registro 1320 VOLUMEVOLUMEN DE VENDASVENTAS///////////////// Static Function SPED1320(cAlias,dDataDe,dDataAte,aReg1320,nPos1310,ncontBic) Local nPos := 0 Local nBico := 0 aAdd(aReg1320, {}) nBico := 123 + ncontBic nPos:= Len(aReg1320) aAdd(aReg1320[nPos], nPos1310 ) //00 - RELACAO aAdd(aReg1320[nPos], "1320" ) //01 - REG aAdd(aReg1320[nPos], StrZero(nBico,3) ) //02 - NUM_BICO aAdd(aReg1320[nPos], "192" ) //03 - NR_INTERV aAdd(aReg1320[nPos], "mo intervencaointervención" ) //04 - MOT_INTERV aAdd(aReg1320[nPos], "Nom dodel Interventor" ) //05 - NOM_INTERV aAdd(aReg1320[nPos], "79427589000320" ) //06 - CNPJ_INTERV aAdd(aReg1320[nPos], "45723220667" ) //07 - CPF_INTERV aAdd(aReg1320[nPos], 100 ) //08 - VAL_FECHA aAdd(aReg1320[nPos], 20 ) //09 - VAL_ABERT aAdd(aReg1320[nPos], 10 ) //10 - VOL_AFERI aAdd(aReg1320[nPos], "70" ) //11 - VOL_VENDAS Return(aReg1320) ///////////////// Registro 1350 Bombas | Registro 1360 Lacres dasde las bombas | Registro 1370 Pistolas Bicosde dala bomba ///////////////// Static Function Reg1350P(cAlias,dDataDe,dDataAte,aReg0200,aReg0190) Local lConcFil := SuperGetMv("MV_COFLSPD",,.T.) //SomaSuma filialsucursal aoal codigocódigo dodel produtoproducto Local cProd := PadR(Alltrim("001"+ Iif(lConcFil,xFilial("SB1"),"")),TamSX3("B1_COD")[1]) Local aReg1350 := {} Local aReg1360 := {} Local aReg1370 := {} Local nPos := 0 //------------------------------- 1 aAdd(aReg1350, {}) nPos:= Len(aReg1350) aAdd(aReg1350[nPos], "1350" ) //01 - REG aAdd(aReg1350[nPos], "01" ) //02 - SERIE aAdd(aReg1350[nPos], "nomenombre fabricante 1" ) //03 - FABRICANTE aAdd(aReg1350[nPos], "mod bomba 1" ) //04 - MODELO aAdd(aReg1350[nPos], "0" ) //04 - TIPO_MEDICAO aAdd(aReg1360, {}) nPos:= Len(aReg1360) aAdd(aReg1360[nPos], "1360" ) //01 - REG aAdd(aReg1360[nPos], "01" ) //02 - NUM_LACRE aAdd(aReg1360[nPos], dDataAte ) //03 - DT_APLICACAO aAdd(aReg1360, {}) nPos:= Len(aReg1360) aAdd(aReg1360[nPos], "1360" ) //01 - REG aAdd(aReg1360[nPos], "011" ) //02 - NUM_LACRE aAdd(aReg1360[nPos], dDataAte ) //03 - DT_APLICACAO aAdd(aReg1370, {}) nPos:= Len(aReg1370) aAdd(aReg1370[nPos], "1370" ) //01 - REG aAdd(aReg1370[nPos], "01" ) //02 - NUM_BICO aAdd(aReg1370[nPos], cProd ) //03 - COD_ITEM aAdd(aReg1370[nPos], "10" ) //geracaogeneración dodel 0200 SPEDSeek("SB1",,xFilial("SB1")+cProd) SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd) GrvRegTrS(cAlias,1,aReg1350) GrvRegTrS(cAlias,1,aReg1360) GrvRegTrS(cAlias,1,aReg1370) //-------------------------------------------- 2 aReg1350 := {} aReg1360 := {} aReg1370 := {} aAdd(aReg1350, {}) nPos:= Len(aReg1350) aAdd(aReg1350[nPos], "1350" ) //01 - REG aAdd(aReg1350[nPos], "02" ) //02 - SERIE aAdd(aReg1350[nPos], "nomenombre fabricante 2" ) //03 - FABRICANTE aAdd(aReg1350[nPos], "mod bomba 2" ) //04 - MODELO aAdd(aReg1350[nPos], "0" ) //04 - TIPO_MEDICAO aAdd(aReg1360, {}) nPos:= Len(aReg1360) aAdd(aReg1360[nPos], "1360" ) //01 - REG aAdd(aReg1360[nPos], "02" ) //02 - NUM_LACRE aAdd(aReg1360[nPos], dDataAte ) //03 - DT_APLICACAO aAdd(aReg1370, {}) nPos:= Len(aReg1370) aAdd(aReg1370[nPos], "1370" ) //01 - REG aAdd(aReg1370[nPos], "02" ) //02 - NUM_BICO aAdd(aReg1370[nPos], cProd ) //03 - COD_ITEM aAdd(aReg1370[nPos], "10" ) //geraçãogeneración dodel 0200 SPEDSeek("SB1",,xFilial("SB1")+cProd) SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd) aAdd(aReg1370, {}) nPos:= Len(aReg1370) aAdd(aReg1370[nPos], "1370" ) //01 - REG aAdd(aReg1370[nPos], "022" ) //02 - NUM_BICO aAdd(aReg1370[nPos], cProd ) //03 - COD_ITEM aAdd(aReg1370[nPos], "10" ) //geraçãogeneración dodel 0200 SPEDSeek("SB1",,xFilial("SB1")+cProd) SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd) GrvRegTrS(cAlias,2,aReg1350) GrvRegTrS(cAlias,2,aReg1360) GrvRegTrS(cAlias,2,aReg1370) //-------------------------------- 3 aReg1350 := {} aReg1360 := {} aReg1370 := {} aAdd(aReg1350, {}) nPos:= Len(aReg1350) aAdd(aReg1350[nPos], "1350" ) //01 - REG aAdd(aReg1350[nPos], "03" ) //02 - SERIE aAdd(aReg1350[nPos], "nomenombre fabricante 3" ) //03 - FABRICANTE aAdd(aReg1350[nPos], "mod bomba 3" ) //04 - MODELO aAdd(aReg1350[nPos], "0" ) //04 - TIPO_MEDICAO aAdd(aReg1360, {}) nPos:= Len(aReg1360) aAdd(aReg1360[nPos], "1360" ) //01 - REG aAdd(aReg1360[nPos], "03" ) //02 - NUM_LACRE aAdd(aReg1360[nPos], dDataAte ) //03 - DT_APLICACAO aAdd(aReg1360, {}) nPos:= Len(aReg1360) aAdd(aReg1360[nPos], "1360" ) //01 - REG aAdd(aReg1360[nPos], "033" ) //02 - NUM_LACRE aAdd(aReg1360[nPos], dDataAte ) //03 - DT_APLICACAO aAdd(aReg1370, {}) nPos:= Len(aReg1370) aAdd(aReg1370[nPos], "1370" ) //01 - REG aAdd(aReg1370[nPos], "03" ) //02 - NUM_BICO aAdd(aReg1370[nPos], cProd ) //03 - COD_ITEM aAdd(aReg1370[nPos], "10" ) //geraçãogeneración dodel 0200 SPEDSeek("SB1",,xFilial("SB1")+cProd) SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd) aAdd(aReg1370, {}) nPos:= Len(aReg1370) aAdd(aReg1370[nPos], "1370" ) //01 - REG aAdd(aReg1370[nPos], "033" ) //02 - NUM_BICO aAdd(aReg1370[nPos], cProd ) //03 - COD_ITEM aAdd(aReg1370[nPos], "10" ) //geraçãogeneración dodel 0200 SPEDSeek("SB1",,xFilial("SB1")+cProd) SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd) GrvRegTrS(cAlias,3,aReg1350) GrvRegTrS(cAlias,3,aReg1360) GrvRegTrS(cAlias,3,aReg1370) Return() |
Aviso | ||
---|---|---|
| ||
Para generar un campo del registro con 3 decimales basta informar el contenido entre claves y en la segunda posición informar la cantidad de decimales. Ejemplo: Cómo quedará el Array de Para gerar um campo do registro com 3 decimais basta informar o conteúdo entre chaves e na segunda posição informar a quantidade de casas decimais. Exemplo: Como ficará o Array do 1300: No caso será gerado no En este caso, en el campo 4 do del registro 1300 o se generará el valor de 330,000 com con 3 decimaisdecimales. |
...
Para o exemplo de utilização demonstrado no código acima foi criada a tabela SPED1300Cel ejemplo de utilización mostrado en el código anterior se creó la tabla SPED1300C.DBF para alimentar os los registros 1300, 1310 e y 1320.
MV_COMB = Movimentação Diária Movimiento diario de Combustíveiscombustibles
MV_TANQUE = Movimentação Movimiento por Tanquetanque
MV_VENDAS = Volume de VendasVolumen de ventas
MV_COMB | MV_TANQUE | MV_VENDAS |
1 | 126 | 126 |
1 | 127 | 127 |
1 | 127 | 127 |
1 | 127 | 127 |
1 | 128 | 128 |
...