01. DATOS GENERALES

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


02. DESCRIPCIÓN

Punto de entrada SPDFISBLCK para la generación del bloque K en el Sped Fiscal teniendo como premisa la creación de las tablas temporales en la Base de datos vía FWTemporaryTable().

03. ESPECIFICACIÓN

El BLOQUE K se genera por el sistema considerando los movimientos de producción y stock, sin embargo, si las reglas del estándar no atiendan, o entonces, el usuario no tenga todos los movimientos necesarios en el sistema, podrá generar el BLOQUE K por medio del Punto de entrada SPDFISBLCK. Si SPDFISBLCK existiera, el procesamiento estándar del sistema con respecto al BLOCO K será desconsiderado automáticamente.

 

En el P.E SPDFISBLCK, deben crearse tablas temporales para los registros: 0210, K200, K210, K215, K220, K230, K235, K250, K255, K260, K265, K270, K275, K280, K290, K291, K292, K300, K301 y K302.

Importante:

Dentro del P.E SPDFISBLCK, de acuerdo con las reglas del usuario, todas las 20 tablas descritas anteriormente, deben ser instanciadas (creadas) siempre, aunque no todas sean completadas, pues es con estas tablas creadas que la rutina estándar del SPED FISCAL generará el BLOQUE K. Para dicho funcionamiento, el P.E SPDFISBLCK debe devolver el ALIAS de cada una de las 20 tablas temporales creadas y posiblemente completadas.

Parámetros del punto de entrada:

Nombre

Tipo

Descripción

PARAMIXBArray of Record

[01] = De Fecha

[02] = A Fecha

[03] = Tipo de layout (    

0 – Layout simplificado
1 - Layout completo
2 – Layout restringido a los saldos de st
ock

)


Devolución:

Nombre

Tipo

Descripción


Array of Record

Array con los Alias de las 20 tablas temporales creadas y posiblemente completadas, dependiendo de la regla del usuario, en el siguiente orden: 0210, K200, K220, K230, K235, K250, K255, K210, K215, K260, K265, K270, K275, K280, K290, K291, K292, K300, K301 y  K302.


    aRet := {cAlias0210,;
             cAliasK200,;
             cAliasK220,;
             cAliasK230,;
             cAliasK235,;
             cAliasK250,;
             cAliasK255,;
             cAliasK210,;
             cAliasK215,;
             cAliasK260,;
             cAliasK265,;
             cAliasK270,;
             cAliasK275,;
             cAliasK280,;
             cAliasK290,;
             cAliasK291,;
             cAliasK292,;
             cAliasK300,;
             cAliasK301,;
             cAliasK302}

Importante

Puntos importantes con respecto al desarrollo del P.E SPDFISBLCK:

    • En la ejecución del P.E SPDFISBLCK, considere siempre la sucursal actual para el procesamiento.
    • No debe cerrarse ninguno de los Alias dentro del Punto de entrada, pues cuando el BLOQUE K fuer finalizado, el propio fuente del SPED Fiscal finalizará los alias devueltos al final de su procesamiento.

Observación

  • El registro 0210 solamente debe existir si el contenido del campo 7 - TIPO_ITEM del Registro 0200 fuera igual a 03 (producto en proceso) o 04 (producto terminado).
  • Los códigos de los Ítems mostrados en los registros de movimientos como K230, K235, etc, deben existir también en el registro K200.


04. EJEMPLO DE UTILIZACIÓN

Las informaciones pasadas a continuación en el fuente son solamente un ejemplo de cómo generar las informaciones, debe estar atento, pues estas informaciones deben existir en su entorno:

SPED1300
#INCLUDE "PROTHEUS.CH"  
User Function SPDFISBLCK()

Local aRet       := {}
Local cAlias0210 := ''
Local cAliasK200 := ''
Local cAliasK220 := ''
Local cAliasK230 := ''
Local cAliasK235 := ''
Local cAliasK250 := ''
Local cAliasK255 := ''
Local cAliasK210 := ''
Local cAliasK215 := ''
Local cAliasK260 := ''
Local cAliasK265 := ''
Local cAliasK270 := ''
Local cAliasK275 := ''
Local cAliasK280 := ''
Local cAliasK290 := ''
Local cAliasK291 := ''
Local cAliasK292 := ''
Local cAliasK300 := ''
Local cAliasK301 := ''
Local cAliasK302 := ''

Local cProd1 := "MP0000000000000000000000000001"
Local cProd2 := "PA0000000000000000000000000001"

Local cModArq:= ParamIxb[3] // 1 = Completo / 0 = Simplificado

Local lGeraComp := cModArq=="1"

Local dDTBackup := dDataBase

dDataBase:=ParamIxb[1]

        //Crea alias y tablas temporales del bloque K
        TmpBlcK(@cAlias0210, @cAliasK200, @cAliasK220, @cAliasK230, @cAliasK235, @cAliasK250, @cAliasK255, @cAliasK210, @cAliasK215,;
                @cAliasK260, @cAliasK265, @cAliasK270, @cAliasK275, @cAliasK280, @cAliasK290, @cAliasK291, @cAliasK292, @cAliasK300, @cAliasK301, @cAliasK302 )
        


        G0210(cAlias0210,cProd1,cProd2) //Simp

        GK200(cAliasK200,cProd1,cProd2) //Simp

        if lGeraComp
            GK210(cAliasK210,cProd1,cProd2)

            GK215(cAliasK215,cProd1,cProd2)
        endif

        GK220(cAliasK220,cProd1,cProd2) //Simp

        GK230(cAliasK230,cProd1,cProd2) //Simp

        if lGeraComp
            GK235(cAliasK235,cProd1,cProd2)
        endif

        GK250(cAliasK250,cProd1,cProd2) //Simp

        if lGeraComp
            GK255(cAliasK255,cProd1,cProd2)

            GK260(cAliasK260,cProd1,cProd2)

            GK265(cAliasK265,cProd1,cProd2)
        endif

        GK270(cAliasK270,cProd1,cProd2) //Simp

		//Excepción. De acuerdo con el manual, el registro debe informarse a ORIGEM (K270) igual a 5 o si el registro K270 no tuviera corrección de cantidad negativa o positiva
        //if lGeraComp 
            GK275(cAliasK275,cProd1,cProd2)
        //endif

        GK280(cAliasK280,cProd1,cProd2) //Simp

        GK290(cAliasK290,cProd1,cProd2) //Simp

        GK291(cAliasK291,cProd1,cProd2) //Simp

        if lGeraComp
            GK292(cAliasK292,cProd1,cProd2)
        endif

        GK300(cAliasK300,cProd1,cProd2) //Simp

        GK301(cAliasK301,cProd1,cProd2) //Simp

        if lGeraComp
            GK302(cAliasK302,cProd1,cProd2)
        endif 

        //Incluye alias de las tablas temporales creadas
        aRet := {cAlias0210,;
                 cAliasK200,;
                 cAliasK220,;
                 cAliasK230,;
                 cAliasK235,;
                 cAliasK250,;
                 cAliasK255,;
                 cAliasK210,;
                 cAliasK215,;
                 cAliasK260,;
                 cAliasK265,;
                 cAliasK270,;
                 cAliasK275,;
                 cAliasK280,;
                 cAliasK290,;
                 cAliasK291,;
                 cAliasK292,;
                 cAliasK300,;
                 cAliasK301,;
                 cAliasK302 }

dDataBase:=dDTBackup

Return aRet


//-------------------------------------------------------------------
/*/{Protheus.doc} TmpBlcK
Función para creación de las tablas temporales para generación del bloque K
/*/
//-------------------------------------------------------------------
Static Function TmpBlcK(cAlias0210,cAliasK200,cAliasK220,cAliasK230,cAliasK235,cAliasK250,cAliasK255,cAliasK210, cAliasK215, cAliasK260, cAliasK265, cAliasK270,cAliasK275,cAliasK280,cAliasK290,cAliasK291,cAliasK292,cAliasK300,cAliasK301,cAliasK302 )

Local aCampos   := {}
Local nTamFil   := TamSX3("D1_FILIAL")[1]
Local nTamDt    := TamSX3("D1_DTDIGIT")[1]
Local aTamQtd   := TamSX3("B2_QATU")
Local nTamOP    := TamSX3("D3_OP")[1]
Local nTamCod   := TamSX3("B1_COD")[1]
Local nTamChave := TamSX3("D1_COD")[1] + TamSX3("D1_SERIE")[1] + TamSX3("D1_FORNECE")[1] + TamSX3("D1_LOJA")[1]
Local nTamPar   := TamSX3("A1_COD")[1] + TamSX3("A1_LOJA")[1]
Local nTamReg   := 4

Local oAliasTMP1
Local oAliasTMP2
Local oAliasTMP3
Local oAliasTMP4
Local oAliasTMP5
Local oAliasTMP6
Local oAliasTMP7
Local oAliasTMP8
Local oAliasTMP9
Local oAliasTMP10
Local oAliasTMP11
Local oAliasTMP12
Local oAliasTMP13
Local oAliasTMP14
Local oAliasTMP15
Local oAliasTMP16
Local oAliasTMP17
Local oAliasTMP18
Local oAliasTMP19
Local oAliasTMP20
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE 0210
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 do registro 0210
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //***Código del producto que realizará la relación con el registro principal 0200
    AADD(aCampos,{"COD_I_COMP" ,"C",nTamCod ,0}) //Campo 02 del registro 0210
    AADD(aCampos,{"QTD_COMP" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 03 del registro 0210
    AADD(aCampos,{"PERDA" ,"N",5 ,2}) //Campo 04 del registro 0210

    cAlias0210 := '0210'
    CriaTabTmp(@oAliasTMP1, cAlias0210, aCampos, {"FILIAL", "COD_ITEM", "COD_I_COMP"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K200
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del registro K200
    AADD(aCampos,{"DT_EST" ,"D",nTamDt ,0}) //Campo 02 del registro K200
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Campo 03 del registro K200
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 04 del registro K200
    AADD(aCampos,{"IND_EST" ,"C",1 ,0}) //Campo 05 del registro K200
    AADD(aCampos,{"COD_PART" ,"C",nTamPar,0}) //Campo 06 do registro K200

    cAliasK200 := 'K200'
    CriaTabTmp(@oAliasTMP2, cAliasK200, aCampos, {"FILIAL", "DT_EST", "COD_ITEM"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K220
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del registro K220
    AADD(aCampos,{"DT_MOV" ,"D",nTamDt ,0}) //Campo 02 del registro K220
    AADD(aCampos,{"COD_ITEM_O" ,"C",nTamCod ,0}) //Campo 03 del registro K220
    AADD(aCampos,{"COD_ITEM_O" ,"C",nTamCod ,0}) //Campo 04 del registro K220
    AADD(aCampos,{"QTD_ORI" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 05 del registro K220
    AADD(aCampos,{"QTD_DEST" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 06 del registro K220

    cAliasK220 := 'K220'
    CriaTabTmp(@oAliasTMP3, cAliasK220, aCampos, {"FILIAL"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K230
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del registro K230
    AADD(aCampos,{"DT_INI_OP" ,"D",nTamDt ,0}) //Campo 02 del registro K230
    AADD(aCampos,{"DT_FIN_OP" ,"C",nTamDt ,0}) //Campo 03 del registro K230
    AADD(aCampos,{"COD_DOC_OP" ,"C",nTamOP ,0}) //***Campo 04 del registro K230. Campo utilizado para realizar la relación con el registro secundario K230
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Campo 05 del registro K230
    AADD(aCampos,{"QTD_ENC" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 06 del registro K230

    cAliasK230 := 'K230'
    CriaTabTmp(@oAliasTMP4, cAliasK230, aCampos, {"FILIAL", "COD_DOC_OP"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K235
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del registro K235
    AADD(aCampos,{"DT_SAIDA" ,"D",nTamDt ,0}) //Campo 02 del registro K235
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Campo 03 del registro K235
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 04 del registro K235
    AADD(aCampos,{"COD_INS_SU" ,"C",nTamCod ,0}) //Campo 05 del registro K235
    AADD(aCampos,{"COD_DOC_OP" ,"C",nTamOP ,0}) //***Campo de vínculo con el registro K230, la relación de K230 y K235 se realizará por este campo

    cAliasK235 := 'K235'
    CriaTabTmp(@oAliasTMP5, cAliasK235, aCampos, {"FILIAL", "COD_DOC_OP"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K250
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del registro K250
    AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) //***Campo de vínculo con registro secundario K255
    AADD(aCampos,{"DT_PROD" ,"D",nTamDt ,0}) //Campo 02 del registro K250
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Campo 03 del registro K250
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 04 del registro K250

    cAliasK250 := 'K250'
    CriaTabTmp(@oAliasTMP6, cAliasK250, aCampos, {"FILIAL", "DT_PROD", "COD_ITEM"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K255
//--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del registro K255
    AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) //***Campo de vínculo con registro principal K250
    AADD(aCampos,{"DT_CONS" ,"D",nTamDt ,0}) //Campo 02 del registro K255
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Campo 03 del registro K255
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 04 del registro K255
    AADD(aCampos,{"COD_INS_SU" ,"C",nTamCod ,0}) //Campo 05 del registro K250

    cAliasK255 := 'K255'
    CriaTabTmp(@oAliasTMP7, cAliasK255, aCampos, {"FILIAL", "CHAVE"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K210
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) //Filial
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del Registro K210    
    AADD(aCampos,{"DT_INI_OS" ,"D",nTamDt ,0}) //Campo 01 del Registro K210
    AADD(aCampos,{"DT_INI_OS" ,"D",nTamDt ,0}) //Campo 02 del Registro K210
    AADD(aCampos,{"COD_DOC_OS" ,"C",nTamOP ,0}) //Campo 03 del Registro K210
    AADD(aCampos,{"COD_ITEM_O" ,"C",nTamCod ,0}) //Campo 04 del Registro K210
    AADD(aCampos,{"QTD_ORI" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 05 del Registro K210

    cAliasK210 := 'K210'
    CriaTabTmp(@oAliasTMP8, cAliasK210, aCampos, {"FILIAL", "COD_ITEM_O"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K215
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) //Filial
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Campo 01 del Registro K215
    AADD(aCampos,{"COD_DOC_OS" ,"C",nTamOP ,0}) // Campo clave de vínculo con el registro principal K210
    AADD(aCampos,{"COD_ITEM_D" ,"C",nTamCod ,0}) //Campo 02 del Registro K215
    AADD(aCampos,{"QTD_DES" ,"N",aTamQtd[1],aTamQtd[2]}) //Campo 03 del Registro K215

    cAliasK215 := 'K215'
    CriaTabTmp(@oAliasTMP9, cAliasK215, aCampos, {"FILIAL", "COD_DOC_OS"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K260
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) //Filial
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K260"
    AADD(aCampos,{"COD_OP_OS" ,"C",nTamChave ,0}) // Código de identificación de la orden de producción, en el reprocesamiento, o de la orden de servicio, en la reparación
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código del producto/insumo que se reprocesará/reparará o ya reprocesado/reparado
    AADD(aCampos,{"DT_SAIDA" ,"D",nTamCod ,0}) //Fecha de salida del stock
    AADD(aCampos,{"QTD_SAIDA" ,"N",nTamCod ,0}) //Cantidad de salida del stock
    AADD(aCampos,{"DT_RET" ,"D",nTamCod ,0}) //Fecha de devolución al stock (entrada)
    AADD(aCampos,{"QTD_RET" ,"N",nTamCod ,0}) //Cantidad de devolución al stock (entrada)

    cAliasK260 := 'K260'
    CriaTabTmp(@oAliasTMP10, cAliasK260, aCampos, {"FILIAL", "COD_OP_OS"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K265
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) //Filial
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K265"
    AADD(aCampos,{"COD_OP_OS" ,"C",nTamChave ,0}) // Campo clave que vincula al registro Principal K260
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código de la mercadería (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD_CONS" ,"N",nTamCod ,0}) //Cantidad consumida – salida del stock
    AADD(aCampos,{"QTD_RET" ,"N",nTamCod ,0}) //Cantidad devuelta – entrada en stock

    cAliasK265 := 'K265'
    CriaTabTmp(@oAliasTMP11, cAliasK265, aCampos, {"FILIAL", "COD_OP_OS"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K270
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) //Filial
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K270"
    AADD(aCampos,{"DT_INI_AP" ,"D",nTamChave ,0}) // Fecha inicial del período de cálculo en el que ocurrió el apunte que se está corrigiendo
    AADD(aCampos,{"DT_FIN_AP" ,"D",nTamDt ,0}) //Fecha final del período de cálculo en el que ocurrió el apunte que se está corrigiendo
    AADD(aCampos,{"COD_OP_OS" ,"C",nTamCod ,0}) //Código de identificación de la orden de producción o de la orden de servicio que se está corrigiendo
    AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Campo clave que vincula al registro Principal K270
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código de la mercadería que se está corrigiendo (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD_COR_P" ,"N",nTamCod ,0}) //Cantidad de corrección positiva de apunte ocurrido en período de cálculo anterior
    AADD(aCampos,{"QTD_COR_N" ,"N",nTamCod ,0}) //Cantidad de corrección negativa de apunte ocurrido en período de cálculo anterior
    AADD(aCampos,{"ORIGEM " ,"C",nTamCod ,0}) //Origen de la corrección, de acuerdo con el manual del Sped

    cAliasK270 := 'K270'
    CriaTabTmp(@oAliasTMP12, cAliasK270, aCampos, {"FILIAL", "COD_OP_OS"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K275
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) //Filial
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K275"
    AADD(aCampos,{"COD_OP_OS" ,"C",nTamChave ,0}) // Campo clave que vincula al registro Principal K270
    AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Campo clave que vincula al registro Principal K270
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código de la mercadería (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD_COR_P" ,"N",nTamCod ,0}) //Cantidad de corrección positiva de apunte ocurrido en período de cálculo anterior
    AADD(aCampos,{"QTD_COR_N" ,"N",nTamCod ,0}) //Cantidad de corrección negativa de apunte ocurrido en período de cálculo anterior
    AADD(aCampos,{"COD_INS_SU" ,"C",nTamCod ,0}) //Código del insumo que fue sustituido, si ocurriera la sustitución, referente a los Registros K235/K255

    cAliasK275 := 'K275'
    CriaTabTmp(@oAliasTMP13, cAliasK275, aCampos, {"FILIAL", "COD_OP_OS"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K280
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K280"
    AADD(aCampos,{"DT_EST" ,"D",nTamDt ,0}) //Fecha del stock final registrado que se está corrigiendo
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código del ítem (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD_COR_P" ,"N",nTamCod ,0}) //Cantidad de corrección positiva de apunte ocurrido en período de cálculo anterior
    AADD(aCampos,{"QTD_COR_N" ,"N",aTamQtd[1],aTamQtd[2]}) //Cantidad de corrección negativa de apunte ocurrido en período de cálculo anterior
    AADD(aCampos,{"IND_EST" ,"C",aTamQtd[1],aTamQtd[2]}) //Indicador del tipo de stock
    AADD(aCampos,{"COD_PART" ,"C",nTamPar ,0 }) //Código del participante

    cAliasK280 := 'K280'
    CriaTabTmp(@oAliasTMP14, cAliasK280, aCampos, {"FILIAL"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K290
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K290"
    AADD(aCampos,{"DT_INI_OP" ,"D",nTamDt ,0}) //Fecha inicial de la orden de producción
    AADD(aCampos,{"DT_FIN_OP" ,"D",nTamDt ,0}) //Fecha de finalización de la orden de producción
    AADD(aCampos,{"COD_DOC_OP" ,"C",nTamOP ,0}) //Código de identificación de la orden de producción

    cAliasK290 := 'K290'
    CriaTabTmp(@oAliasTMP15, cAliasK290, aCampos, {"FILIAL", "COD_DOC_OP"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K291
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K291"
    AADD(aCampos,{"COD_DOC_OP","C",nTamOP,0}) // Código de identificación de la orden de producción
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código del ítem producido (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2] ,0}) //Cantidad de producción finalizada

    cAliasK291 := 'K291'
    CriaTabTmp(@oAliasTMP16, cAliasK291, aCampos, {"FILIAL", "COD_DOC_OP", "COD_ITEM"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K292
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K292"
    AADD(aCampos,{"COD_DOC_OP","C",nTamOP,0}) // Código de identificación de la orden de producción
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código del ítem producido (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2] ,0}) //Cantidad de producción finalizada

    cAliasK292 := 'K292'
    CriaTabTmp(@oAliasTMP17, cAliasK292, aCampos, {"FILIAL", "COD_DOC_OP", "COD_ITEM"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K300
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) //Campo de vínculo con registros K301 y K302
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K300"
    AADD(aCampos,{"DT_PROD" ,"D",nTamDt ,0}) //Fecha de reconocimiento de la producción ocurrida en el tercero

    cAliasK300 := 'K300'
    CriaTabTmp(@oAliasTMP18, cAliasK300, aCampos, {"FILIAL", "CHAVE"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K301
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K301"
    AADD(aCampos,{"CHAVE" ,"C",nTamChave,0}) // Campo de vínculo con registro K300
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código del ítem producido (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2] ,0}) //Cantidad producida

    cAliasK301 := 'K301'
    CriaTabTmp(@oAliasTMP19, cAliasK301, aCampos, {"FILIAL", "CHAVE"})
    //--------------------------------------------
    //Creación del Archivo de trabajo - BLOQUE K302
    //--------------------------------------------
    aCampos := {}
    AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0})
    AADD(aCampos,{"REG" ,"C",nTamReg ,0}) //Texto fijo con "K302"
    AADD(aCampos,{"CHAVE" ,"C",nTamChave,0}) // Campo de vínculo con registro K300
    AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) //Código del ítem producido (campo 02 del Registro 0200)
    AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2] ,0}) //Cantidad consumida

    cAliasK302 := 'K302'
    CriaTabTmp(@oAliasTMP20, cAliasK302, aCampos, {"FILIAL", "CHAVE"})

Return


Static Function CriaTabTmp(oAlias, cAlias, aCampos, aIndex)

    oAlias  :=	FWTemporaryTable():New(cAlias)
    oAlias:SetFields(aCampos)
    oAlias:AddIndex("01", aIndex)
    oAlias:Create()
    
Return


Static Function G0210(cAlias0210,cProd1,cProd2)

    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro 0210
    //----------------------------------------------------------------
    RecLock (cAlias0210, .T.)
    (cAlias0210)->FILIAL := cFilAnt // Ejemplo de sucursal , debe informar la sucursal de su entorno que debe generar el archivo
    (cAlias0210)->REG := '0210'
    (cAlias0210)->COD_ITEM := cProd1 //Ejemplo de código de producto, debe informarse un código válido en su entorno.
    (cAlias0210)->COD_I_COMP := '600'
    (cAlias0210)->QTD_COMP := 4
    (cAlias0210)->PERDA := 0
    MsUnLock ()

Return

Static Function GK200(cAliasK200,cProd1,cProd2)

    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K200
    //----------------------------------------------------------------
    RecLock (cAliasK200, .T.)
    (cAliasK200)->FILIAL := cFilAnt
    (cAliasK200)->REG := 'K200'
    (cAliasK200)->DT_EST := lastday(dDataBase)
    (cAliasK200)->COD_ITEM := cProd1
    (cAliasK200)->QTD := 1
    (cAliasK200)->IND_EST := '0'
    (cAliasK200)->COD_PART := 'SA100001001' //OBS:Al aplicarse, informe un código de participante válido que exista en la tabla SA1 (clientes) o SA2 (Proveedores) + Tienda - Ejemplo: SA1+ 000010 +01 = "SA100001001". Esté atento al tamaño del código del cliente y de la tienda.
    MsUnLock ()

Return

Static Function GK210(cAliasK210,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K210
    //----------------------------------------------------------------
    RecLock (cAliasK210, .T.)
    (cAliasK210)->FILIAL := cFilAnt
    (cAliasK210)->REG := 'K210'
    (cAliasK210)->DT_INI_OS := lastday(dDataBase,1)
    (cAliasK210)->DT_FIN_OS := lastday(dDataBase)
    (cAliasK210)->COD_DOC_OS := '0000210001'
    (cAliasK210)->COD_ITEM_O := cProd2
    (cAliasK210)->QTD_ORI := 1 
    MsUnLock ()
Return

Static Function GK215(cAliasK215,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K215
    //----------------------------------------------------------------
    RecLock (cAliasK215, .T.)
    (cAliasK215)->FILIAL := cFilAnt
    (cAliasK215)->REG := 'K215'
    (cAliasK215)->COD_DOC_OS := '0000210001'
    (cAliasK215)->COD_ITEM_D := cProd1
    (cAliasK215)->QTD_DES:= 1
    MsUnLock ()
Return

Static Function GK220(cAliasK220,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K220
    //----------------------------------------------------------------
    RecLock (cAliasK220, .T.)
    (cAliasK220)->FILIAL := cFilAnt
    (cAliasK220)->REG := 'K220'
    (cAliasK220)->DT_MOV := lastday(dDataBase,1)
    (cAliasK220)->COD_ITEM_O := cProd1
    (cAliasK220)->COD_ITEM_D := cProd2
    (cAliasK220)->QTD_ORI := 1
    (cAliasK220)->QTD_DEST := 1
    MsUnLock ()
Return

Static Function GK230(cAliasK230,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K230
    //----------------------------------------------------------------
    RecLock (cAliasK230, .T.)
    (cAliasK230)->FILIAL := cFilAnt
    (cAliasK230)->REG := 'K230'
    (cAliasK230)->DT_INI_OP := lastday(dDataBase,1)
    (cAliasK230)->DT_FIN_OP := GRAVADATA(lastday(dDataBase),.F.,5)
    (cAliasK230)->COD_DOC_OP := '00005001001'
    (cAliasK230)->COD_ITEM := cProd2
    (cAliasK230)->QTD_ENC := 1
    MsUnLock ()
Return

Static Function GK235(cAliasK235,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K235
    //----------------------------------------------------------------
    RecLock (cAliasK235, .T.)
    (cAliasK235)->FILIAL := cFilAnt
    (cAliasK235)->REG := 'K235'
    (cAliasK235)->DT_SAIDA := lastday(dDataBase,1)
    (cAliasK235)->COD_ITEM := cProd1
    (cAliasK235)->QTD := 8
    (cAliasK235)->COD_INS_SU := ''
    (cAliasK235)->COD_DOC_OP := '00005001001'
    MsUnLock ()
Return

Static Function GK250(cAliasK250,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K250
    //----------------------------------------------------------------
    RecLock (cAliasK250, .T.)
    (cAliasK250)->FILIAL    := cFilAnt
    (cAliasK250)->REG       := 'K250'
    (cAliasK250)->CHAVE     := '000001'
    (cAliasK250)->COD_ITEM  := cProd2
    (cAliasK250)->DT_PROD   := lastday(dDataBase,1)
    (cAliasK250)->QTD       :=1
    MsUnLock ()
Return

Static Function GK255(cAliasK255,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K255
    //----------------------------------------------------------------
    RecLock (cAliasK255, .T.)
    (cAliasK255)->FILIAL    := cFilAnt
    (cAliasK255)->REG       := 'K255'
    (cAliasK255)->CHAVE     := '000001'
    (cAliasK255)->COD_ITEM  := cProd1
    (cAliasK255)->DT_CONS   := lastday(dDataBase,1)
    (cAliasK255)->QTD       :=1
    (cAliasK255)->COD_INS_SU:= ''
    MsUnLock ()
Return

Static Function GK260(cAliasK260,cProd1,cProd2)
        //----------------------------------------------------------------
        //Incluyendo informaciones en el archivo temporal para el registro K260
        //----------------------------------------------------------------
        RecLock (cAliasK260, .T.)
        (cAliasK260)->FILIAL    := cFilAnt
        (cAliasK260)->REG       := 'K260'
        (cAliasK260)->COD_OP_OS := '000001'
        (cAliasK260)->COD_ITEM  := cProd2
        (cAliasK260)->DT_SAIDA  := lastday(dDataBase,1)
        (cAliasK260)->QTD_SAIDA :=0
        (cAliasK260)->DT_RET    :=lastday(dDataBase,1)
        (cAliasK260)->QTD_RET   :=0
        MsUnLock ()
Return

Static Function GK265(cAliasK265,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K265
    //----------------------------------------------------------------
    RecLock (cAliasK265, .T.)
    (cAliasK265)->FILIAL    := cFilAnt
    (cAliasK265)->REG       := 'K265'
    (cAliasK265)->COD_OP_OS := '000001'
    (cAliasK265)->COD_ITEM  := cProd1
    (cAliasK265)->QTD_CONS :=0
    (cAliasK265)->QTD_RET   :=0
    MsUnLock ()
Return

Static Function GK270(cAliasK270,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K270
    //----------------------------------------------------------------
    RecLock (cAliasK270, .T.)
    (cAliasK270)->FILIAL    := cFilAnt
    (cAliasK270)->REG       := 'K270'
    (cAliasK270)->DT_INI_AP := lastday(MonthSub(dDataBase,1),1)
    (cAliasK270)->DT_FIN_AP := lastday(MonthSub(dDataBase,1))
    (cAliasK270)->COD_OP_OS := '000001'
    (cAliasK270)->CHAVE     := '000001'
    (cAliasK270)->COD_ITEM  := cProd2
    (cAliasK270)->QTD_COR_P := 0
    (cAliasK270)->QTD_COR_N := 0
    (cAliasK270)->ORIGEM    := '1' 
    MsUnLock ()
Return

Static Function GK275(cAliasK275,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K275
    //----------------------------------------------------------------
    RecLock (cAliasK275, .T.)
    (cAliasK275)->FILIAL    := cFilAnt
    (cAliasK275)->REG       := 'K275'
    (cAliasK275)->COD_OP_OS := '000001'
    (cAliasK275)->CHAVE     := '000001'
    (cAliasK275)->COD_ITEM  := cProd2
    (cAliasK275)->QTD_COR_P := 1
    (cAliasK275)->QTD_COR_N := 0
    (cAliasK275)->COD_INS_SU:= ''
    MsUnLock ()
Return

Static Function GK280(cAliasK280,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K280
    //----------------------------------------------------------------
    RecLock (cAliasK280, .T.)
    (cAliasK280)->FILIAL := cFilAnt
    (cAliasK280)->REG := 'K280'
    (cAliasK280)->DT_EST := lastday(MonthSub(dDataBase,1),1)
    (cAliasK280)->COD_ITEM := cProd1
    (cAliasK280)->QTD_COR_P := 1
    (cAliasK280)->QTD_COR_N := 0
    (cAliasK280)->IND_EST := '0'
    (cAliasK280)->COD_PART:='SA1SP0001'
    MsUnLock ()
Return

Static Function GK290(cAliasK290,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K290
    //----------------------------------------------------------------
    RecLock (cAliasK290, .T.)
    (cAliasK290)->FILIAL := cFilAnt
    (cAliasK290)->REG := 'K290'
    (cAliasK290)->DT_INI_OP := lastday(dDataBase,1)
    (cAliasK290)->DT_FIN_OP := lastday(dDataBase)
    (cAliasK290)->COD_DOC_OP := '000001'
    MsUnLock ()
Return

Static Function GK291(cAliasK291,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K291
    //----------------------------------------------------------------
    RecLock (cAliasK291, .T.)
    (cAliasK291)->FILIAL    := cFilAnt
    (cAliasK291)->REG       := 'K291'
    (cAliasK291)->COD_DOC_OP:= '000001'
    (cAliasK291)->COD_ITEM  :=cProd2
    (cAliasK291)->QTD       := 1
    MsUnLock ()
Return

Static Function GK292(cAliasK292,cProd1,cProd2)
        //----------------------------------------------------------------
        //Incluyendo informaciones en el archivo temporal para el registro K292
        //----------------------------------------------------------------
        RecLock (cAliasK292, .T.)
        (cAliasK292)->FILIAL    := cFilAnt
        (cAliasK292)->REG       := 'K292'
        (cAliasK292)->COD_DOC_OP:= '000001'
        (cAliasK292)->COD_ITEM  :=cProd1
        (cAliasK292)->QTD       := 1
        MsUnLock ()
Return

Static Function GK300(cAliasK300,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K300
    //----------------------------------------------------------------
    RecLock (cAliasK300, .T.)
    (cAliasK300)->FILIAL := cFilAnt
    (cAliasK300)->CHAVE  := '00000001'
    (cAliasK300)->REG    := 'K300'
    (cAliasK300)->DT_PROD:= lastday(dDataBase,1)
    MsUnLock ()
Return

Static Function GK301(cAliasK301,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K301
    //----------------------------------------------------------------
    RecLock (cAliasK301, .T.)
    (cAliasK301)->FILIAL := cFilAnt
    (cAliasK301)->REG    := 'K301'
    (cAliasK301)->CHAVE  := '00000001'
    (cAliasK301)->COD_ITEM:= cProd2
    (cAliasK301)->QTD    := 1
    MsUnLock ()
Return

Static Function GK302(cAliasK302,cProd1,cProd2)
    //----------------------------------------------------------------
    //Incluyendo informaciones en el archivo temporal para el registro K302
    //----------------------------------------------------------------
    RecLock (cAliasK302, .T.)
    (cAliasK302)->FILIAL := cFilAnt
    (cAliasK302)->REG    := 'K302'
    (cAliasK302)->CHAVE  := '00000001'
    (cAliasK302)->COD_ITEM:= cProd1
    (cAliasK302)->QTD    := 1
    MsUnLock ()
Return


05. OTRAS INFORMACIONES

SPDFIS - Sped Fiscal