Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Compras (SIGACOM) - MATA110 - Ejemplo de rutina automática para Prueba de Inclusión, Modificación y Borrado simple con prorrateo


Duda

¿Cómo utilizar la rutina automática para Prueba de Inclusión, Modificación y Borrado simple con prorrateo 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 con prorrateo

#Include 'Protheus.ch'
#include "tbiconn.ch"
 
User Function MyMa110_RAT()
 
Local aCabSC := {}
Local aItensSC := {}
Local aLinhaC1 := {}
Local nX := 0
Local nY := 0
Local cDoc := ""
Local lOk := .T.
Local aLinhaCX := {}
Local aRateioCX := {}
Local nAux := 0
 
Local lAuxInclui := .T.
Local lAuxAltera := .T.
Local lAuxExclui := .T.
 
Private lMsErroAuto := .F.
Private lAutoErrNoFile := .T.
 
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SC1","SB1","SCX"
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificación del entorno pra prueba |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SC1")
DbSelectArea("SB1")
DbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"01"))
lOk := .F.
ConOut(OemToAnsi("Registrar producto: 01"))
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"02"))
lOk := .F.
ConOut(OemToAnsi("Registrar producto: 02"))
EndIf
 
DbSelectArea("CTT")
DbSetOrder(1)
If !CTT->(MsSeek(xFilial("CTT")+"CC01"))
lOk := .F.
ConOut(OemToAnsi("Registrar centro de costo: CC01 (Rutina CTBA180)"))
EndIf
If !CTT->(MsSeek(xFilial("CTT")+"CC02"))
lOk := .F.
ConOut(OemToAnsi("Registrar centro de costo: CC02 (Rutina CTBA180)"))
EndIf
 
DbSelectArea("CT1")
DbSetOrder(1)
If !CT1->(MsSeek(xFilial("CT1")+"CTA01"))
lOk := .F.
ConOut(OemToAnsi("Registrar cuenta: CTA01 (Rutina CTBA020)"))
EndIf
If !CT1->(MsSeek(xFilial("CT1")+"CTA02"))
lOk := .F.
ConOut(OemToAnsi("Registrar cuenta: CTA02 (Rutina CTBA020)"))
EndIf
 
/*DbSelectArea("CTD")
DbSetOrder(1)
If !CTD->(MsSeek(xFilial("CTD")+"IT01"))
lOk := .F.
ConOut(OemToAnsi("Registrar ítem contable: IT01 (Rutina CTBA180)"))
EndIf
If !CTD->(MsSeek(xFilial("CTD")+"IT02"))
lOk := .F.
ConOut(OemToAnsi("Registrar ítem contable: IT02 (Rutina CTBA180)"))
EndIf*/
 
/*DbSelectArea("CTH")
DbSetOrder(1)
If !CTH->(MsSeek(xFilial("CTH")+"CV01"))
lOk := .F.
ConOut(OemToAnsi("Registrar clase valor: CV01 (Rutina CTBA180)"))
EndIf
If !CTH->(MsSeek(xFilial("CTH")+"CV02"))
lOk := .F.
ConOut(OemToAnsi("Registrar clase valor: CV02 (Rutina CTBA180)"))
EndIf*/
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Inicia o teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
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})
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta itens |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Inclusión de SC con 2 ítems - CON PRORRATEO SCX"))
aItensSC := {}
aRateioCX := {}
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(aLinhaC1,{"C1_RATEIO" ,1 ,Nil})
aadd(aItensSC,aLinhaC1)
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Elabora ítems prorrateo |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aAdd(aRateioCX,{StrZero(nX,len(SC1->C1_ITEM)),{}}) //Item da SC1
 
// Primer ítem del prorrateo
aLinhaCX := {}
//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})
aAdd(aLinhaCX,{"CX_ITEM",StrZero(1,Len(SCX->CX_ITEM)),NIL})
aAdd(aLinhaCX,{"CX_PERC",50,NIL})
aAdd(aLinhaCX,{"CX_CC","CC01",NIL})
aAdd(aLinhaCX,{"CX_CONTA","CTA01",NIL})
//aAdd(aLinhaCX,{"CX_ITEMCTA","IT01",NIL})
//aAdd(aLinhaCX,{"CX_CLVL","CV01",NIL})
aAdd(aRateioCX[nX][2],aLinhaCX)
 
// Segundo ítem del prorrateo
aLinhaCX := {}
//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})
aAdd(aLinhaCX,{"CX_ITEM",StrZero(2,Len(SCX->CX_ITEM)),NIL})
aAdd(aLinhaCX,{"CX_PERC",50,NIL})
aAdd(aLinhaCX,{"CX_CC","CC02",NIL})
aAdd(aLinhaCX,{"CX_CONTA","CTA02",NIL})
//aAdd(aLinhaCX,{"CX_ITEMCTA","IT02",NIL})
//aAdd(aLinhaCX,{"CX_CLVL","CV02",NIL})
aAdd(aRateioCX[nX][2],aLinhaCX)
Next nX
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Ejecuta rutina automática |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,3,aRateioCX)
 
If !lMsErroAuto
ConOut(OemToAnsi("¡Incluido con éxito! ")+cDoc)
Else
ConOut(OemToAnsi("¡Error en la inclusión!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Pega Ultima SC |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SC1->(dbSetOrder(1))
SC1->(DbGoTop())
While SC1->(!Eof())
cDoc := SC1->C1_NUM
SC1->(DbSkip())
EndDo
EndIf
 
If 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 - CON PRORRATEO SCX"))
aItensSC := {}
aRateioCX := {}
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(aLinhaC1,{"C1_RATEIO" ,1 ,Nil})
aadd(aItensSC,aLinhaC1)
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Elabora ítems prorrateo |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aAdd(aRateioCX,{StrZero(nX,len(SC1->C1_ITEM)),{}}) //Item da SC1
 
// Primer ítem del prorrateo
aLinhaCX := {}
//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})
aAdd(aLinhaCX,{"CX_ITEM",StrZero(1,Len(SCX->CX_ITEM)),NIL})
aAdd(aLinhaCX,{"CX_PERC",25,NIL})
aAdd(aLinhaCX,{"CX_CC","CC01",NIL})
aAdd(aLinhaCX,{"CX_CONTA","CTA01",NIL})
//aAdd(aLinhaCX,{"CX_ITEMCTA","IT01",NIL})
//aAdd(aLinhaCX,{"CX_CLVL","CV01",NIL})
aAdd(aRateioCX[nX][2],aLinhaCX)
 
// Segundo ítem del prorrateo
aLinhaCX := {}
//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})
aAdd(aLinhaCX,{"CX_ITEM",StrZero(2,Len(SCX->CX_ITEM)),NIL})
aAdd(aLinhaCX,{"CX_PERC",75,NIL})
aAdd(aLinhaCX,{"CX_CC","CC02",NIL})
aAdd(aLinhaCX,{"CX_CONTA","CTA02",NIL})
//aAdd(aLinhaCX,{"CX_ITEMCTA","IT02",NIL})
//aAdd(aLinhaCX,{"CX_CLVL","CV02",NIL})
aAdd(aRateioCX[nX][2],aLinhaCX)
Next nX
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Ejecuta rutina automática |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,4,aRateioCX)
 
If !lMsErroAuto
ConOut(OemToAnsi("¡Modificado con éxito! ")+cDoc)
Else
ConOut(OemToAnsi("¡Error en la modificación!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf
 
If lAuxExclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Prueba de borrado - Elabora encabezado |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Borrado de SC - CON PRORRATEO SCX"))
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Prueba de borrado - Elabora ítems |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aItensSC := {}
aRateioCX := {}
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Ejecuta rutina automática |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,5,aRateioCX)
 
If !lMsErroAuto
ConOut(OemToAnsi("¡Borrado con éxito! ")+cDoc)
Else
ConOut(OemToAnsi("¡Error al borrar!"+cDoc))
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf
 
Next nY
ConOut(OemToAnsi("Fim : ")+Time())
EndIf
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Cierre del entorno |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RESET ENVIRONMENT
 
Return

 

Conozca más.

PCOM06002 - Solicitudes de compras (MATA110) - Ejemplo de rutina automática
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 0 de 0

0 Comentarios

Inicie sesión para dejar un comentario.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Rellene los campos siguientes para iniciar el chat:

Chat _