Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. 

...

DATOS GENERALES

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.

03. 

...

ESPECIFICACIÓN

Parámetros del punto

...

de entrada:

Nome

Nombre

Tipo

Descrição

Descripción

PARAMIXBArray 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;.

...

Devolución:

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.

04. 

...

EJEMPLO DE

...

UTILIZACIÓN


Bloco de código
languagejava
themeMidnight
titleSPED1300
#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
titleImportante

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:

Image Added

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:

Image Removed

Como ficará o Array do 1300:

Image Modified

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.

Image RemovedImage Added



05.

...

OTRAS INFORMACIONES

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
1126126
1127127
1127127
1127127
1128128

...