Lista de precio vía Execauto

Características del requisito

Línea de producto:

Microsiga Protheus

Segmento:

Servicios

Módulo:

Facturación

Rutina:

Rutina

Nombre técnico

OMSA010

Lista de precios

País(es):

Todos

Base(s) de datos:

Todas

Tablas utilizadas:

DA0 - Encabezado de la lista de precio

DA1 - Ítems de la lista de precio

Sistema(s) operativo(s):

Windows / Linux

Descripción

Ejecutar la rutina automática de mantenimiento de las listas de precio.

Tipo de ejecución para la rutina automática.
3 = "Incluir"
4 = "Modificar"
5 = "Borrar"

Execauto

Descripción:

Execauto de mantenimiento de las listas de precio

Ubicación:

OMSA010.PRX

Eventos:

3 = "Incluir"
4 = "Modificar"
5 = "Borrar"

Parámetros:

Nombre

Tipo

Descripción

Obligatorio

ExpA1

Array of Record

Array con lista de campos (DA0)

X

ExpA2

Array of Record

Array con lista de campos (DA1)

X

ExpN1NuméricoNúmero de la opción seleccionadaX

 

Ejemplo:

//Obs: Este modelo de utilización solamente es válido para el release 11.8 y versiones futuras.

Ejemplo:
#include "totvs.ch"
#include "tbiconn.ch"
#include "fwmvcdef.ch"

User Function MyOMSA010()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local nY := 0
Local lOk := .T.
PRIVATE lMsErroAuto := .F.

ConOut(Repl("-",80))

//????????????????????????????????
//| Verificación del entorno para prueba |
//????????????????????????????????
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"PA001"))
	lOk := .F.
	ConOut("Registrar producto: PA001")
EndIf

If !SB1->(MsSeek(xFilial("SB1")+"PA002"))
	lOk := .F.
	ConOut("Registrar producto: PA002")
EndIf

If lOk
	ConOut("Inicio: "+Time())
	//????????????????????????????????
	//| Prueba de inclusión |
	//???????????????????????????????? 
	For nY := 1 To 1
		aCabec := {}
		aItens := {}
		aadd(aCabec,{"DA0_DESCRI" ,"PRUEBA DE TABLA",Nil})
		aLinha := {}
		aadd(aLinha,{"DA1_ITEM","0001"})
		aadd(aLinha,{"DA1_CODPRO","PA001"})
		aadd(aLinha,{"DA1_PRCVEN",10,Nil})
		aadd(aItens,aLinha)
		aLinha := {}
		aadd(aLinha,{"DA1_ITEM","0002"})
		aadd(aLinha,{"DA1_CODPRO","PA002"})
		aadd(aLinha,{"DA1_PRCVEN",10,Nil})
		aadd(aItens,aLinha)

		MSExecAuto({|x,y,z| Omsa010(x,y,z)},aCabec,aItens,3)
		If !lMsErroAuto
			ConOut("¡Incluido con éxito! ")
		Else
			ConOut("¡Error en la inclusión!")
		EndIf
	Next nY
	ConOut("Final : "+Time())

	//????????????????????????????????
	//| Prueba de modificación |
	//????????????????????????????????
	aCabec := {}
	aItens := {}
	For nY := 1 To 1
		aCabec := {}
		aItens := {}
		aadd(aCabec,{"DA0_CODTAB" ,DA0->DA0_CODTAB,Nil})
		aadd(aCabec,{"DA0_DESCRI" ,"TESTE DE TABELA",Nil})
		aLinha := {}
		aadd(aLinha,{"LINPOS","DA1_ITEM","0001"})
		aadd(aLinha,{"AUTDELETA","N",Nil})
		aadd(aLinha,{"DA1_CODPRO","PA001"})
		aadd(aLinha,{"DA1_PRCVEN",11,Nil})
		aadd(aItens,aLinha)
		aLinha := {}
		aadd(aLinha,{"LINPOS","DA1_ITEM","0002"})
		aadd(aLinha,{"AUTDELETA","N",Nil})
		aadd(aLinha,{"DA1_CODPRO","PA002"})
		aadd(aLinha,{"DA1_PRCVEN",11,Nil})
		aadd(aItens,aLinha)
	Next nY
	ConOut(PadC("Prueba de modificación",80))
	ConOut("Inicio: "+Time())

	MSExecAuto({|x,y,z| Omsa010(x,y,z)},aCabec,aItens,4)
	ConOut("Final : "+Time())
	ConOut(Repl("-",80))

	//????????????????????????????????
	//| Prueba de borrado |
	//????????????????????????????????
	ConOut(PadC("Prueba de borrado",80))
	ConOut("Inicio: "+Time())
	MSExecAuto({|x,y,z| Omsa010(x,y,z)},aCabec,aItens,5)
	If !lMsErroAuto
		ConOut("¡Borrado con éxito! "+DA0->DA0_CODTAB)
	Else
		ConOut("¡Error en el borrado!")
	EndIf
	ConOut("Final : "+Time())
	ConOut(Repl("-",80))
EndIf

Return
Ejemplo:
#include "totvs.ch"
#include "tbiconn.ch"
#include "fwmvcdef.ch"

User Function MyOMSA010()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local nY := 0
Local lOk := .T.
PRIVATE lMsErroAuto := .F.

ConOut(Repl("-",80))
ConOut(PadC("Prueba de modificación de 1 lista de precio",80))

//????????????????????????????????
//| Verificación del entorno para prueba |
//????????????????????????????????
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"PA001"))
	lOk := .F.
	ConOut("Registrar producto: PA001")
EndIf

If !SB1->(MsSeek(xFilial("SB1")+"PA002"))
	lOk := .F.
	ConOut("Registrar producto: PA002")
EndIf

If !SB1->(MsSeek(xFilial("SB1")+"PA003"))
	lOk := .F.
	ConOut("Registrar producto: PA003")
EndIf  

If lOk

	ConOut("Inicio: "+Time())

	//????????????????????????????????
	//| Prueba de modificación  
    //| En este ejemplo se realizarán tres cambios:
	//| - Incluyendo condición de pago en el encabezado   
    //| - Cambiando Valor del ítem 0001
 	//| - Borrando el ítem 0002
	//????????????????????????????????
	aCabec := {}
	aItens := {}
	For nY := 1 To 1
		aCabec := {}
		aItens := {}
		aadd(aCabec,{"DA0_CODTAB" ,DA0->DA0_CODTAB,Nil})
		aadd(aCabec,{"DA0_DESCRI" ,"PRUEBA DE LISTA",Nil})
		aadd(aCabec,{"DA0_CONDPG" ,"001",Nil}) //Incluyendo condición de pago en el encabezado   
        aLinha := {}
		aadd(aLinha,{"LINPOS","DA1_ITEM","0001"})
		aadd(aLinha,{"AUTDELETA","N",Nil})
		aadd(aLinha,{"DA1_CODPRO","PA001"})
		aadd(aLinha,{"DA1_PRCVEN",50,Nil}) //Atribuyendo el valor 50 para este ítem
		aadd(aItens,aLinha)
		aLinha := {}
		aadd(aLinha,{"LINPOS","DA1_ITEM","0002"})
		aadd(aLinha,{"AUTDELETA","S",Nil}) //Borrando el ítem 0002
		aadd(aItens,aLinha)
	Next nY
	ConOut(PadC("Prueba de modificación",80))
	ConOut("Inicio: "+Time())

	MSExecAuto({|x,y,z| Omsa010(x,y,z)},aCabec,aItens,4)
	ConOut("Final : "+Time())
	ConOut(Repl("-",80))

	//????????????????????????????????
	//| Prueba de modificación    
    //| - Incluyendo un nuevo ítem en una lista  
    //????????????????????????????????
	aCabec := {}
	aItens := {}
	For nY := 1 To 1
		aCabec := {}
		aItens := {}
		aadd(aCabec,{"DA0_CODTAB" ,DA0->DA0_CODTAB,Nil})
		aadd(aCabec,{"DA0_DESCRI" ,"PRUEBA DE LISTA",Nil})
		aLinha := {}
  		aadd(aLinha,{"LINPOS","DA1_ITEM","0001"}) //Si no se informara LINPOS el ítem se sobrepondrá.
        aadd(aItens,aLinha)
        aLinha := {}
        aadd(aLinha,{"LINPOS","DA1_ITEM","0002"})
        aadd(aItens,aLinha)
        aLinha := {}
		aadd(aLinha,{"DA1_ITEM","0003",Nil}) //Incluyendo el ítem 0003 sin que los ítems 0001 y 0002 estén afectados.
        aadd(aLinha,{"DA1_CODPRO","PA003"})
        aadd(aLinha,{"DA1_PRCVEN",100,Nil})     
		aadd(aItens,aLinha)
	Next nY
	ConOut(PadC("Prueba de modificación",80))
	ConOut("Inicio: "+Time())

	MSExecAuto({|x,y,z| Omsa010(x,y,z)},aCabec,aItens,4)
	ConOut("Fim : "+Time())
	ConOut(Repl("-",80))   ConOut("Final : "+Time())
	ConOut(Repl("-",80))
EndIf

Return