CONTENIDO

  1. Visión general
  2. Descripción
  3. Ejemplo

01. VISIÓN GENERAL

Línea de producto:

Microsiga Protheus®

Segmento:

Servicios

Módulo:

SIGAFIS - Libros fiscales

Función:

MATA920 - Factura manual de salida

Alcance:

Microsiga Protheus 12

Versiones:

Microsiga Protheus 12

Sistemas operativos:

Todos

Compatible con las Bases de datos:

Todas

Nivel de acceso:

Nivel 1 (Acceso Clientes)

Idiomas:

Todos

02. DESCRIPCIÓN

Esta rutina tiene la finalidad de efectuar el registro manual de documentos fiscales de salida Si el entorno Libros fiscales no estuviera integrado con Facturación, debe utilizarse esta opción para registrar los impuestos de las salidas de materiales de la empresa, sin ejecutar los registros automáticos para Financiero y Stock.

03. EJEMPLO

ExecAuto - MAT920

#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function MyMata920()
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local nX := 0
Local nY := 0
Local cDoc := ""
Local lOk := .T.
PRIVATE lMsErroAuto := .F.

//--Apertura del entorno
ConOut(Repl("-",80))
ConOut(PadC("Prueba de inclusión de 10 documentos de entrada con 30 ítems cada uno",80))

PREPARE ENVIRONMENT EMPRESA "99" SUCURSAL "01" MÓDULO "FIS" TABLES "SF2","SD2","SA1","SA2","SB1","SB2","SF4"

dbSelectArea("SB1")dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"PA001"))
lOk := .F.
ConOut("Registrar producto: PA001")
EndIf
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"501"))
lOk := .F.
ConOut("Registrar TES: 501")
EndIf
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001"))
lOk := .F.
ConOut("Registrar condición de pago: 001")
EndIf
dbSelectArea("SA1")
dbSetOrder(1)
If !SA1->(MsSeek(xFilial("SA1")+PADR("CL0001",Len(SA1->A1_COD))+"01"))
lOk := .F.
ConOut("Registrar cliente: CL000101")

EndIf
If lOk
ConOut("Inicio: "+Time())
//--Verifica el último documento válido para un proveedor
dbSelectArea("SF2")
dbSetOrder(2)
MsSeek(xFilial("SF2")+Padr("CL0001",Len(SA1->A1_COD))+"01z",.T.)
dbSkip(-1)
cDoc := SF2->F2_DOC
For nY := 1 To 10
aCabec := {}
aItens := {}

If Empty(cDoc)cDoc := StrZero(1,Len(SD2->D2_DOC))
Else
cDoc := Soma1(cDoc)
EndIf
aadd(aCabec,{"F2_TIPO" ,"N"})
aadd(aCabec,{"F2_FORMUL" ,"N"})
aadd(aCabec,{"F2_DOC" ,(cDoc)})
aadd(aCabec,{"F2_SERIE" ,"UNI"})
aadd(aCabec,{"F2_EMISSAO",dDataBase})
aadd(aCabec,{"F2_CLIENTE",Padr("CL0001",Len(SA1->A1_COD))})
aadd(aCabec,{"F2_LOJA" ,"01"})
aadd(aCabec,{"F2_ESPECIE","NF"})
aadd(aCabec,{"F2_COND","001"})
aadd(aCabec,{"F2_DESCONT",0})
aadd(aCabec,{"F2_FRETE",0})
aadd(aCabec,{"F2_SEGURO",0})
aadd(aCabec,{"F2_DESPESA",0})
If cPaisLoc == "PTG"
aadd(aCabec,{"F2_DESNTRB",0})
aadd(aCabec,{"F2_TARA",0})
Endif
For nX := 1 To 30
aLinha := {}
aadd(aLinha,{"D2_COD" ,"PA001",Nil})
aadd(aLinha,{"D2_ITEM" ,StrZero(nX,2),Nil})
aadd(aLinha,{"D2_QUANT",1,Nil})
aadd(aLinha,{"D2_PRCVEN",100,Nil})
aadd(aLinha,{"D2_TOTAL",100,Nil})
aadd(aLinha,{"D2_TES","501",Nil})
aadd(aItens,aLinha)
Next nX
//-- Prueba de inclusión
MATA920(aCabec,aItens)
If !lMsErroAuto
ConOut("¡Incluido con éxito! "+cDoc)

Else
MostraErro()
ConOut("¡Error en la inclusión!")
EndIf
Next nY
ConOut("Final : "+Time())
//-- Prueba de borrado
aCabec := {}
aItens := {}
aadd(aCabec,{"F2_TIPO" ,"N"})
aadd(aCabec,{"F2_FORMUL" ,"N"})
aadd(aCabec,{"F2_DOC" ,(cDoc)})
aadd(aCabec,{"F2_SERIE" ,"UNI"})
aadd(aCabec,{"F2_EMISSAO",dDataBase})
aadd(aCabec,{"F2_CLIENTE","CL0001"})
aadd(aCabec,{"F2_LOJA" ,"01"})
aadd(aCabec,{"F2_ESPECIE","NFE"})
aadd(aCabec,{"F2_DESCONT",0})
aadd(aCabec,{"F2_FRETE",10})
aadd(aCabec,{"F2_SEGURO",20})
aadd(aCabec,{"F2_DESPESA",30})
If cPaisLoc == "PTG"
aadd(aCabec,{"F2_DESNTRB",40})
aadd(aCabec,{"F2_TARA",50})
Endif
For nX := 1 To 30
aLinha := {}
aadd(aLinha,{"D2_ITEM",StrZero(nX,Len(SD1->D1_ITEM)),Nil})
aadd(aLinha,{"D2_COD","PA002",Nil})
aadd(aLinha,{"D2_QUANT",2,Nil})
aadd(aLinha,{"D2_PRCVEN",100,Nil})
aadd(aLinha,{"D2_TOTAL",200,Nil})
aadd(aItens,aLinha)
Next nX
//-- Prueba de borrado
ConOut(PadC("Prueba de borrado",80))
ConOut("Inicio: "+Time())
MATA920(aCabec,aItens,5)
If !lMsErroAuto
ConOut("¡Borrado con éxito! "+cDoc)
Else
MostraErro()
ConOut("¡Error en el borrado!")
EndIf
ConOut("Fim : "+Time())
ConOut(Repl("-",80))
EndIf

RESET ENVIRONMENT

Return(.T.)

Static Function ProcH(cCampo)
Return aScan(aAutoCab,{|x|Trim(x[1])== cCampo })