01. DATOS GENERALES

Línea de producto:Microsiga Protheus®
Segmento:Servicios
Módulo:Fiscal


02. DESCRIPCIÓN

Punto de entrada para incluir los registros que corresponde a los contribuyentes del sector mayorista de combustibles.


1300 - MOVIMIENTO DIARIO DE COMBUSTIBLES
1310 - MOVIMIENTO DIARIO DE COMBUSTIBLES POR TANQUE
1320 - VOLUMEN DE VENTAS
1350 - BOMBAS
1360 - SELLOS DE LA BOMBA
1370 - PISTOLAS DE LA BOMBA


Panorama general:

Registro presentado por los contribuyentes del sector minorista de combustibles (estaciones de servicio de combustibles), se refiere al movimiento diario de combustibles, habiendo solamente un registro por tipo de combustible y por fecha de cierre del movimiento (campo COD_ITEM y campo DT_FECH), independientemente de que ocurran intervenciones.
No debe 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:

Nombre

Tipo

Descripción

PARAMIXBArray of Record

Array con datos del procesamiento con 5 elementos

[1] = Alias de la tabla.

[2] = De Fecha.

[3] = A Fecha.

[4] = Array del registro 0200.

[5] = Array del registro 0190.

Devolución:

Nombre

Tipo

Descripción


Array of Record

Devuelve Array reg0200 con productos utilizados

Importante:

Si el punto de entrada se ejecuta, el Array reg0200 tiene 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 de entrada.

04. EJEMPLO DE UTILIZACIÓN


#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  := {}
   
Local aProdutos := {}
Local nProdutos := 0
Local cProduto  := ""
Local aMovto    := {}
Local dDataMov  := dDataDe
// Local lConcFil  := SuperGetMv("MV_COFLSPD",,.F.) //Cuando el parámetro MV_COFLSPD = .T.,  indica que se agregará la sucursal al código del producto, en este caso se debe ajustar el modelo de este Punto de Entrada para agregar la sucursal al producto.
 
Local nMov := 0
Local nX   := 0
 
// Informe la capacidad de los Tanques de Combustible
// Esta implementación busca cumplir la Nota Técnica 2025.001 v1.0
// (layout versión 020) - Válido del 01/01/2026 al 31/12/2026
oJsTanque := JsonObject():New()
oJsTanque["001"] := 30000
oJsTanque["002"] := 30000
oJsTanque["003"] := 30000
oJsTanque["004"] := 50000
oJsTanque["005"] := 50000
 
// Productos y sus respectivos saldos iniciales al inicio del período
aAdd( aProdutos, { "320102001", "GASOLINA C COMÚN"          ,"L", "PA", 10000.00} )
aAdd( aProdutos, { "320102002", "GASOLINA C COMÚN CON ADITIVO","L", "PA", 10000.00} )
aAdd( aProdutos, { "810101001", "ETANOL HIDRATADO COMÚN"    ,"L", "PA", 10000.00} )
aAdd( aProdutos, { "420102004", "GASÓLEO A S500"        ,"L", "PA", 10000.00} )
 
// Realiza la grabación de los registros 0190 y 0200
// 0190 - IDENTIFICACIÓN DE LAS UNIDADES DE MEDIDA
// 0200 - TABLA DE IDENTIFICACIÓN DEL ÍTEM (PRODUCTO Y SERVICIOS)
nProdutos := len( aProdutos )
For nX:= 1 to nProdutos
 
    cProduto := PadR(Alltrim( aProdutos[nX][1] ),TamSX3("B1_COD")[1])
    //generación del 0200
    SPEDSeek("SB1",,xFilial("SB1")+cProduto)
    SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProduto)
 
Next
 
 
/*
A continuación vea un EJEMPLO de cómo se puede estructurar un (array/tabla/resultado de query/etc) que contiene el movimiento de combustibles en que se grabarán
los registros 1300, 1310, 1320 del SPEDFISCAL
 
Estructura
COD_ITEM    - Código del Producto, que consta en el registro 0200
DT_FECH     - Fecha de cierre del movimiento
NUM_BICO    - Pistola conectada a la bomba que está unida al tanque de combustible
NUM_TANQUE  - Tanque que almacena el combustible
ESTQ_ABERT  - Stock almacenado en el tanque correspondiente al inicio del día en litros
VOL_ENTR    - Volumen recibido en el día, en litros NR_INTERV  - Número de la Intervención
MOT_INTERV  - Motivo de la Intervención
NOM_INTERV  - Nombre del Interventor
CNPJ_INTERV - CNPJ de la empresa responsable por la Intervención
CPF_INTERV  - CPF del técnico responsable por la Intervención
VAL_FECHA   - Valor de la lectura final del contador, al cerrar la boquilla
VAL_ABERT   - Valor de lectura inicial del contador, en la apertura de la boquilla
VOL_AFERI   - Verificaciones de la bomba, en litros
VOL_VENDAS  - Ventas (VAL_FECHA - VAL_ABERT - VOL_AFERI)
*/
 
 
// Registro 1320 - GASOLINA C COMÚN
aAdd( aMovto  , { "320102001", dDataMov, "11", "001", 5000.00 ,    0.00, '','','','','',  500.000,   0.000,    0.00, 500.000})
aAdd( aMovto  , { "320102001", dDataMov, "12", "001", 5000.00 ,    0.00, '','','','','',  500.000,   0.000,    0.00, 500.000})
aAdd( aMovto  , { "320102001", dDataMov, "13", "001", 5000.00 ,    0.00, '13131','Pistola con fuga de combustible'          ,'Nombre del Interventor','79427589000320','45723220667',    0.000,   0.000,    0.00,   0.000})
aAdd( aMovto  , { "320102001", dDataMov, "14", "002", 5000.00 ,    0.00, '','','','','',  500.000,   0.000,    0.00, 500.000})
aAdd( aMovto  , { "320102001", dDataMov, "15", "002", 5000.00 ,    0.00, '','','','','',  500.000,   0.000,    0.00, 500.000})
aAdd( aMovto  , { "320102001", dDataMov, "16", "002", 5000.00 ,    0.00, '16161','Error de medición esperando inspección INMETRO','Nombre del Interventor','79427589000320','45723220667',    0.000,   0.000,    0.00,   0.000})
 
// Registro 1320 - GASOLINA C COMÚN CON ADITIVO
aAdd( aMovto  , { "320102002", dDataMov, "21", "003", 10000.00,    0.00, '','','','','', 1000.000,   0.000,    0.00, 1000.000})
aAdd( aMovto  , { "320102002", dDataMov, "22", "003", 10000.00,    0.00, '','','','','', 1000.000,   0.000,    0.00, 1000.000})
aAdd( aMovto  , { "320102002", dDataMov, "23", "003", 10000.00,    0.00, '','','','','', 1000.000,   0.000,    0.00, 1000.000})
aAdd( aMovto  , { "320102002", dDataMov, "24", "003", 10000.00,    0.00, '','','','','', 1000.000,   0.000,    0.00, 1000.000})
 
// Registro 1320 - ETANOL HIDRATADO COMÚN
aAdd( aMovto  , { "810101001", dDataMov, "31", "004", 10000.00,    0.00, '','','','','', 2500.000,   0.000,    0.00, 2500.000})
aAdd( aMovto  , { "810101001", dDataMov, "32", "004", 10000.00,    0.00, '','','','','', 2500.000,   0.000,    0.00, 2500.000})
 
// Registro 1320 - GASÓLEO A S500
aAdd( aMovto  , { "420102004", dDataMov, "41", "005", 10000.00, 3000.00, '','','','','', 2500.000,   0.000,    0.00, 2500.000})
aAdd( aMovto  , { "420102004", dDataMov, "42", "005", 10000.00, 3000.00, '','','','','', 2500.000,   0.000,    0.00, 2500.000})
 
 
cProduto := ""
nMovto   := len( aMovto )
 
For nMov := 1 To nMovto
 
    If cProduto <> aMovto[nMov,1]
 
       cProduto  := aMovto[nMov, 1]
       dDataMov  := aMovto[nMov, 2]
       nEstq_aber:= aProdutos[aScan(aProdutos, {|x| x[1]==cProduto})][5]
 
       nPos1300 := Reg1300( aReg1300, cProduto, dDataMov, nEstq_aber )
 
    EndIf
 
    cBico     := aMovto[nMov, 3]
    cTanque   := aMovto[nMov, 4]
    nEstq_tanq:= aMovto[nMov, 5]
    nCont_Ini := aMovto[nMov,12]
    nCont_Fin := aMovto[nMov,13]
    nAfericao := aMovto[nMov,14]
    nVlrVenda := aMovto[nMov,15]
 
    nPos1320  := Reg1320( aReg1300, aReg1310, aReg1320, nPos1300, cBico , cTanque, aMovto[nMov])
 
Next
 
//Función Reg1350P, responsable por incluir información de las bombas y sus respectivos lacres, así como también de las pistolas. 
//Esta función no se debe activar en loop
Reg1350P(cAlias,dDataDe,dDataAte,@aReg0200,@aReg0190)
   
//Después de generar los arrays con todo el movimiento del período se activará la función SPEDRegs para agregarlos correctamente en el archivo del SPED
//Esta función no debe ser activada en loop
SPEDRegs(cAlias,{aReg1300,aReg1310,aReg1320})
 
 
FreeObj(oJsTanque)
oJsTanque := Nil   
   
Return(aReg0200)
 
 
//-----------------------------------------------------------------------------
/*/{Protheus.doc} Reg1300()
@description creación del Registro 1300 que se debe mostrar para presentación 
             informaciones sobre el MOVIMIENTO DIARIO DE COMBUSTIBLES
 
@author Equipo de Desarrollo Fiscal
/*/
//-----------------------------------------------------------------------------
Static Function Reg1300( aReg1300, cProduto, dDataMov, nEstq_aber )
 
Local nPos1300  := 0
 
nPos1300 := aScan ( aReg1300, {|aX| aX[1]== "1300" .and. aX[2] == cProduto .and. aX[3] == dDataMov })
 
If nPos1300 == 0
       aAdd(aReg1300, {})
       nPos1300:= Len(aReg1300)
       aAdd(aReg1300[nPos1300], "1300"        )         //01 - REG
       aAdd(aReg1300[nPos1300], cProduto      )         //02 - COD_ITEM
       aAdd(aReg1300[nPos1300], dDataMov      )         //03 - DT_FECH
       aAdd(aReg1300[nPos1300], {nEstq_aber,3})         //04 - ESTQ_ABERT
       aAdd(aReg1300[nPos1300], {0,3}         )         //05 - VOL_ENTR
       aAdd(aReg1300[nPos1300], {nEstq_aber,3})         //06 - VOL_DISP
       aAdd(aReg1300[nPos1300], {0,3}         )         //07 - VOL_SAIDAS
       aAdd(aReg1300[nPos1300], {0,3}         )         //08 - ESTQ_ESCR
       aAdd(aReg1300[nPos1300], {0,3}         )         //09 - VAL_AJ_PERDA
       aAdd(aReg1300[nPos1300], {0,3}         )         //10 - VAL_AJ_GANHO
       aAdd(aReg1300[nPos1300], {0,3}         )         //11 - FECH_FISICO
EndIf
 
Return(nPos1300)
 
//-----------------------------------------------------------------------------
/*/{Protheus.doc} Reg1320()
@description Tiene como finalidad generar y actualizar los respectivos registros
             Generación Registro 1320 - volumen de venta
             Actualización Registro 1310 - Movimiento diario de combustibles por tanque
             Actualización Registro 1300 - Movimiento diario de combustibles
 
@author Equipo de Desarrollo Fiscal
/*/
Static Function Reg1320( aReg1300, aReg1310, aReg1320, nPos1300, cBico, cTanque, aMovto )
Local nPos1310 := 0
Local nPos1320 := 0
 
// Actualización Registro 1310 - Movimiento diario de combustibles
nPos1310 := aScan( aReg1310, {|aX| aX[1]== nPos1300 .and. aX[2] == "1310" .and. aX[3] == cTanque })
 
If nPos1310 == 0
    aAdd(aReg1310, {})
    nPos1310:= Len(aReg1310)
    aAdd(aReg1310[nPos1310], nPos1300       )           //00 - RELACAO
    aAdd(aReg1310[nPos1310], "1310"         )           //01 - REG
    aAdd(aReg1310[nPos1310], cTanque        )           //02 - NUM_TANQUE
    aAdd(aReg1310[nPos1310], {nEstq_tanq,3} )           //03 - ESTQ_ABERT
    aAdd(aReg1310[nPos1310], {0,3}          )           //04 - VOL_ENTR
    aAdd(aReg1310[nPos1310], {nEstq_tanq,3} )           //05 - VOL_DISP
    aAdd(aReg1310[nPos1310], {0,3}          )           //06 - VOL_SAIDAS
    aAdd(aReg1310[nPos1310], {0,3}          )           //07 - ESTQ_ESCR
    aAdd(aReg1310[nPos1310], {0,3}          )           //08 - VAL_AJ_PERDA
    aAdd(aReg1310[nPos1310], {0,3}          )           //09 - VAL_AJ_GANHO
    aAdd(aReg1310[nPos1310], {0,3}          )           //10 - FECH_FISICO
    If cVersao >= "020"  //  (layout versión 020) - Válido a la parte del 01/01/2026
        aAdd(aReg1310[nPos1310], {oJsTanque[cTanque],0} )   //11 - CAP_TANQUE
    EndIf
EndIf
aReg1310[nPos1310][05][1]  +=  aMovto[06]                                               // VOL_ENTR     - Volumen recibido en el día, en litros
aReg1310[nPos1310][06][1]  :=  aReg1310[nPos1310][04][1] + aReg1310[nPos1310][05][1]    // VOL_DISP     - Volumen disponible (ESTQ_ABERT + VOL_ENTR), en litros
aReg1310[nPos1310][07][1]  +=  aMovto[12]                                               // VOL_SAIDAS   - Volumen Total de las Salidas, en litros
aReg1310[nPos1310][08][1]  :=  aReg1310[nPos1310][06][1] - aReg1310[nPos1310][07][1]    // ESTQ_ESCR    - Stock de Registro(05 – 06), litros
aReg1310[nPos1310][09][1]  :=  0.00                                                     // VAL_AJ_PERDA - Valor de la pérdida, en litros
aReg1310[nPos1310][10][1]  :=  0.00                                                     // VAL_AJ_GANHO - Valor del beneficio, en litros
aReg1310[nPos1310][11][1]  :=  aReg1310[nPos1310][08][1]                                // FECH_FISICO  - Stock de cierre físico del tanque
 
 
// Actualización Registro 1300 - Movimiento diario de combustibles
aReg1300[nPos1300][05][1]  +=  aMovto[06]                                               // VOL_ENTR     - Volumen recibido en el día (en litros)
aReg1300[nPos1300][06][1]  :=  aReg1300[nPos1300][04][1]+aReg1300[nPos1300][05][1]      // VOL_DISP    - Volumen disponible (04 + 05), en litros
aReg1300[nPos1300][07][1]  +=  aMovto[12]                                               // VOL_SAIDAS   - Volumen Total de las salidas, en litros
aReg1300[nPos1300][08][1]  :=  aReg1300[nPos1300][06][1] - aReg1300[nPos1300][07][1]    // ESTQ_ESCR    - Stock de Registro(06 – 07), en litros
aReg1300[nPos1300][09][1]  +=  0.00                                                     // VAL_AJ_PERDA - Valor de la pérdida, en litros
aReg1300[nPos1300][10][1]  :=  0.00                                                     // VAL_AJ_GANHO - Valor del beneficio, en litros
aReg1300[nPos1300][11][1]  :=  aReg1300[nPos1300][08][1]                                // FECH_FISICO  - Stock de cierre físico, en litros
 
 
// Actualización Registro 1320 volumen de ventas
aAdd(aReg1320, {})
nPos1320:= Len(aReg1320)
aAdd(aReg1320[nPos1320], nPos1310       )       //00 - RELACIÓN
aAdd(aReg1320[nPos1320], "1320"         )       //01 - REG
aAdd(aReg1320[nPos1320], cBico          )       //02 - NUM_BICO
aAdd(aReg1320[nPos1320], aMovto[7]      )       //03 - NR_INTERV
aAdd(aReg1320[nPos1320], aMovto[8]      )       //04 - MOT_INTERV
aAdd(aReg1320[nPos1320], aMovto[9]      )       //05 - NOM_INTERV
aAdd(aReg1320[nPos1320], aMovto[10]     )       //06 - CNPJ_INTERV
aAdd(aReg1320[nPos1320], aMovto[11]     )       //07 - CPF_INTERV
aAdd(aReg1320[nPos1320], aMovto[12]     )       //08 - VAL_FECHA
aAdd(aReg1320[nPos1320], aMovto[13]     )       //09 - VAL_ABERT
aAdd(aReg1320[nPos1320], aMovto[14]     )       //10 - VOL_AFERI
aAdd(aReg1320[nPos1320], aMovto[15]     )       //11 - VOL_VENDAS
 
Return
 
    
     
//-----------------------------------------------------------------------------
/*/{Protheus.doc} Reg1350P()
@description Creación de los siguientes registros que se generan de manera independiente de los demás
             Registro 1350 - Bombas
             Registro 1360 - Lacres de la bomba
             Registro 1370 - Pistolas de la bomba
 
@author Equipo de Desarrollo Fiscal
/*/
//-----------------------------------------------------------------------------
Static Function Reg1350P(cAlias,dDataDe,dDataAte,aReg0200,aReg0190)
 
Local aReg1350  := {}
Local aReg1360  := {}
Local aReg1370  := {}
Local nPos      := 0
 
//-----------  Bomba de combustible 1  -----------\\
 
aAdd(aReg1350, {})
nPos:= Len(aReg1350)
aAdd(aReg1350[nPos], "1350"                                         )       //01 - REG
aAdd(aReg1350[nPos], "001.001"                                      )       //02 - SERIE
aAdd(aReg1350[nPos], "Fabricante Bomba Combustible - Linea Leves"   )       //03 - FABRICANTE
aAdd(aReg1350[nPos], "MODELO_GASOLINA"                              )       //04 - MODELO
aAdd(aReg1350[nPos], "1"                                            )       //05 - TIPO_MEDICAO
    
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd(aReg1360[nPos], "1360"         )           //01 - REG
aAdd(aReg1360[nPos], "001.001.001"  )           //02 - NUM_LACRE
aAdd(aReg1360[nPos], dDataAte       )           //03 - DT_APLICACAO
    
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "11"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "001"          )           //04 - NUM_TANQUE
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "12"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "001"          )           //04 - NUM_TANQUE
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "13"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "001"          )           //04 - NUM_TANQUE
 
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "14"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "002"          )           //04 - NUM_TANQUE
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "15"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "002"          )           //04 - NUM_TANQUE
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "16"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "002"          )           //04 - NUM_TANQUE
 
GrvRegTrS(cAlias,1,aReg1350)
GrvRegTrS(cAlias,1,aReg1360)
GrvRegTrS(cAlias,1,aReg1370)
    
//-----------  Bomba de combustible 2  -----------\\
    
aReg1350     := {}
aReg1360     := {}
aReg1370     := {}
nPos := 0
    
aAdd(aReg1350, {})
nPos:= Len(aReg1350)
aAdd(aReg1350[nPos], "1350"                                         )       //01 - REG
aAdd(aReg1350[nPos], "002.002"                                      )       //02 - SERIE
aAdd(aReg1350[nPos], "Fabricante Bomba Combustible - Linea Leves"   )       //03 - FABRICANTE
aAdd(aReg1350[nPos], "MODELO_GASOLINA"                              )       //04 - MODELO
aAdd(aReg1350[nPos], "1"                                            )       //05 - TIPO_MEDICAO
    
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd(aReg1360[nPos], "1360"         )           //01 - REG
aAdd(aReg1360[nPos], "002.002.001"  )           //02 - NUM_LACRE
aAdd(aReg1360[nPos], dDataAte       )           //03 - DT_APLICACAO
    
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "21"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102002"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "003"          )           //04 - NUM_TANQUE
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "22"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102002"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "003"          )           //04 - NUM_TANQUE
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "23"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102002"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "003"          )           //04 - NUM_TANQUE
 
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "24"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "320102002"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "003"          )           //04 - NUM_TANQUE
   
GrvRegTrS(cAlias,2,aReg1350)
GrvRegTrS(cAlias,2,aReg1360)
GrvRegTrS(cAlias,2,aReg1370)
 
//-----------  Bomba de combustible 3  -----------\\
    
aReg1350     := {}
aReg1360     := {}
aReg1370     := {}
    
aAdd(aReg1350, {})
nPos:= Len(aReg1350)
aAdd(aReg1350[nPos], "1350"                                         )           //01 - REG
aAdd(aReg1350[nPos], "003.501"                                      )           //02 - SERIE
aAdd(aReg1350[nPos], "Fabricante Bomba Combustible - Linea Leve"   )       //03 - FABRICANTE
aAdd(aReg1350[nPos], "MODELO_ETANOL"                                )           //04 - MODELO
aAdd(aReg1350[nPos], "1"                                            )           //05 - TIPO_MEDICAO
 
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd(aReg1360[nPos], "1360"         )           //01 - REG
aAdd(aReg1360[nPos], "003.501.001"  )           //02 - NUM_LACRE
aAdd(aReg1360[nPos], dDataAte       )           //03 - DT_APLICACAO
    
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "41"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "420102004"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "004"          )           //04 - NUM_TANQUE
    
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "42"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "420102004"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "004"          )           //04 - NUM_TANQUE
    
    
GrvRegTrS(cAlias,3,aReg1350)
GrvRegTrS(cAlias,3,aReg1360)
GrvRegTrS(cAlias,3,aReg1370)
 
//-----------  Bomba de combustible 4  -----------\\
 
aReg1350     := {}
aReg1360     := {}
aReg1370     := {}
    
aAdd(aReg1350, {})
nPos:= Len(aReg1350)
aAdd(aReg1350[nPos], "1350"                                         )           //01 - REG
aAdd(aReg1350[nPos], "004.001"                                      )           //02 - SERIE
aAdd(aReg1350[nPos], "Fabricante Bomba Combustible - Línea PESADO"  )           //03 - FABRICANTE
aAdd(aReg1350[nPos], "MODELO_DIESEL"                                )           //04 - MODELO
aAdd(aReg1350[nPos], "1"                                            )           //05 - TIPO_MEDICAO
 
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd(aReg1360[nPos], "1360"         )           //01 - REG
aAdd(aReg1360[nPos], "004.001.001"  )           //02 - NUM_LACRE
aAdd(aReg1360[nPos], dDataAte       )           //03 - DT_APLICACAO
    
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "31"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "810101001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "005"          )           //04 - NUM_TANQUE
    
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd(aReg1370[nPos], "1370"         )           //01 - REG
aAdd(aReg1370[nPos], "32"           )           //02 - NUM_BICO
aAdd(aReg1370[nPos], "810101001"    )           //03 - COD_ITEM
aAdd(aReg1370[nPos], "005"          )           //04 - NUM_TANQUE
    
GrvRegTrS(cAlias,4,aReg1350)
GrvRegTrS(cAlias,4,aReg1360)
GrvRegTrS(cAlias,4,aReg1370)
 
Return()       

Para generar un campo del registro con 3 decimales es solo informar el contenido entre claves y en la segunda posición informar la cantidad de decimales.

Ejemplo:

Cómo quedará el Array de 1300:

En este caso, en el campo 4 del registro 1300 se generará el valor de 330,000 con 3 decimales.


  • Layout versión 020 - Válido a partir del  

    Se implementó un Acuerdo en la versión del layout para mostrar el campo 11 - CAP_TANQUE para el registro 1310 - Movimiento diario de combustibles por tanque 


    cVersao - es una variable private originada del programa SPEDFISCAL

05. OTRAS INFORMACIONES

El ejemplo de utilización de este Punto de Entrada muestra la generación de los registros involucrando contribuyentes del sector mayorista de combustibles (gasolineras), que tienen carácter meramente ilustrativo, sirviendo como base para que se pueda desarrollar un Punto de Entrada específico que cumpla con las reglas de negocio de cada empresa, así como la integración con sus sistemas que tratan exclusivamente del comercio de combustible.

Procuramos traer para este modelo un escenario completo de una Gasolinera que comercializa los siguientes productos:

Código Producto ANP

Descripción

UMObservaciones

320102001

GASOLINA C COMÚN

L2 tanques con capacidad de 30.000 litros cada uno, vinculados a las pistolas de abastecimiento 11, 12, 13, 14, 15, 16.

320102002

GASOLINA C COMÚN CON ADITIVOS

L1 tanque con capacidad de 30.000 litros, vinculados a las pistolas de abastecimiento 21, 22, 23, 24.

810101001

ETANOL HIDRATADO COMÚN

L1 tanque con capacidad de 50.000 litros, vinculados a las pistolas de abastecimiento 31, 32.

420102004

ACEITE DIESEL A S500

L1 tanque con capacidad de 50.000 litros, vinculados a las pistolas de abastecimiento 41, 42.

Observación 1.   Los productos deben estar previamente registrados en la tabla SB1 - Productos.

Observación 2.   Cuando el parámetro MV_COFLSPD = .T.,  indica que se agregará la sucursal al Código del Producto, en este caso se debe ajustar el modelo de este Punto de Entrada para agregar la sucursal al producto.