Duda
¿Cómo utilizar la rutina automática para Prueba de Inclusión, Modificación y Borrado simple MATA110?
Ambiente
Cross Segmentos - TOTVS Backoffice (Línea Protheus) - MI - Compras (SIGACOM) - Todas las versiones 12
Pais: Todos
Solución
Esta rutina permite el registro de cualquier solicitud de compras de mercaderías en la empresa. La entrada de las solicitudes inicia el proceso de compras.
Ejemplo de Prueba de Inclusión, Modificación y Borrado simple
#Include 'Protheus.ch'
#include "tbiconn.ch"
User Function MyMata110()
Local aCabSC := {}
Local aItensSC := {}
Local aLinhaC1 := {}
Local nX := 0
Local nY := 0
Local cDoc := ""Local lOk := .T.Local nAux := 0
Local lAuxInclui := .T.Local lAuxAltera := .T.Local lAuxExclui := .T.Private lMsHelpAuto := .T.
PRIVATE lMsErroAuto := .F.
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Abertura do ambiente |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙConOut(Repl("-",80))
ConOut(PadC(OemToAnsi("Prueba de Inclusión, Modificación y Borrado de solicitud de compras"),80))
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SC1","SB1"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Verificación del entorno para prueba |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙDbSelectArea("SC1")DbSelectArea("SB1")DbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"01"))
lOk := .F.ConOut(OemToAnsi("Registro producto: 01"))
EndIfIf !SB1->(MsSeek(xFilial("SB1")+"02"))
lOk := .F.ConOut(OemToAnsi("Registrar producto: 02"))
EndIf//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Inicia la prueba |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙIf lOk
ConOut(OemToAnsi("Inicio: ")+Time())For nY := 1 To 2
ConOut(PadC(OemToAnsi("Inicio repetición " + cValToChar(nY)),80))
aCabSC := {}
aItensSC := {}
If lAuxInclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Verifica número de la SC |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙcDoc := GetSXENum("SC1","C1_NUM")SC1->(dbSetOrder(1))
While SC1->(dbSeek(xFilial("SC1")+cDoc))
ConfirmSX8()cDoc := GetSXENum("SC1","C1_NUM")EndDo//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Elabora encabezado |//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Elabora ítems |//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ConOut(OemToAnsi("Inclusión de SC con 2 ítems"))
For nX := 1 To 2
aLinhaC1 := {}
aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil})
aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})
aadd(aLinhaC1,{"C1_QUANT" ,1 ,Nil})
aadd(aItensSC,aLinhaC1)Next nX//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Prueba de inclusión - Ejecución rutina automática |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙMSExecAuto({|x,y| mata110(x,y)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("¡Incluido con éxito! ")+cDoc)ElseConOut(OemToAnsi("¡Error en la inclusión!")+cDoc)aErrPCAuto := GETAUTOGRLOG()For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])Next nAuxEndIfElse//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Pega Ultima SC |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙSC1->(dbSetOrder(1))
SC1->(DbGoTop())While SC1->(!Eof())
cDoc := SC1->C1_NUMSC1->(DbSkip())EndDoEndIfIf lAuxAltera
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Prueba de modificación - Elabora encabezado |//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Prueba de modificación - Elabora ítems |//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ConOut(OemToAnsi("Modificación de SC para 3 ítems"))
aItensSC := {}
For nX := 1 To 3
aLinhaC1 := {}
aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil})
aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})
aadd(aLinhaC1,{"C1_QUANT" ,1+nX ,Nil})
aadd(aItensSC,aLinhaC1)Next nX//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Prueba de modificación - Ejecución rutina automática |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙMSExecAuto({|x,y| mata110(x,y,4)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("¡Modificado con éxito! ")+cDoc)ElseConOut(OemToAnsi("¡Error en la modificación!")+cDoc)aErrPCAuto := GETAUTOGRLOG()For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])Next nAuxEndIfEndIfIf lAuxExclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Prueba de borrado - Elabora encabezado |//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ConOut(OemToAnsi("Borrado de SC"))aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Prueba de borrado - Elabora ítems |//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿aItensSC := {}
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Prueba de borrado - Ejecución rutina automática |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙMSExecAuto({|x,y| mata110(x,y,5)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("¡Borrado con éxito! ")+cDoc)ElseConOut(OemToAnsi("¡Error al borrar!"+cDoc))aErrPCAuto := GETAUTOGRLOG()For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])Next nAuxEndIfEndIfNext nYConOut(OemToAnsi("Fim : ")+Time())EndIf//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Fechamento do ambiente |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙRESET ENVIRONMENTReturn(.T.)
Conozca más.
PCOM06002 - Solicitudes de compras (MATA110) - Ejemplo de rutina automática
0 Comentarios