Línea de producto: | Protheus | ||||
Segmento: | Manufactura | ||||
Módulo: | SIGACOM | ||||
Rutina: |
| ||||
Registros iniciales | Producto, centro de costo, cuenta contable, ítem contable y clase valor | ||||
Tickets relacionados | 769289 | ||||
Requisito: | DMANMAT02-226 | ||||
País(es): | Todos | ||||
Base(s) de datos: | Todos | ||||
Tablas: | SC1, SB1, SCX, AFG | ||||
Sistema(s) operativo(s): | Todos |
Descripció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. | ||||||||||||||||||||||||||||||||
Sintaxis: | MATA110 - Solicitud de Compras ( [ PARAMIXB1 ] [ PARAMIXB2 ] [ PARAMIXB3 ] [ PARAMIXB4 ] [ PARAMIXB5 ] [ PARAMIXB6 ] [ PARAMIXB7 ] ) | ||||||||||||||||||||||||||||||||
Programa fuente: | MATA110.prw | ||||||||||||||||||||||||||||||||
Devolución: | NIL | ||||||||||||||||||||||||||||||||
Parámetros: |
| ||||||||||||||||||||||||||||||||
Observaciones: | La opción 7 (Aprobación) de la rutina automática del MATA110 está disponible solamente para quien no utiliza el módulo SIGAGSP. El RDMAKE de aprobación debe contener el campo C1_APROV en el encabezado. Es necesario informar el valor deseado: "L" = Liberado Realizando de esta manera el RDMAKE, la liberación/rechazo/bloqueo se realizará sin problemas. Observación: Utilice el usuario y contraseña en el Prepare Environment para que se complete el campo C1_NOMAPRO. |
Ejemplo 1
Bloco de código | ||||||
---|---|---|---|---|---|---|
|
| |||||
#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")) |
EndIf |
If !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) |
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")) |
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) |
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")) |
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) |
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 |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ |
//| |
Fechamento do ambiente | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ |
RESET ENVIRONMENT |
Return(.T.) |
Bloco de código |
---|
|
|
|
| |||||
#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 |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include "Protheus.ch" #Include "RwMake.ch" #Include "TbiConn.ch" User Function EXEC110() Local aCabec := {} Local aItens := {} Local aLinha := {} Local nOpc := 7 //Aprobación Local nTotItens := 1 Local nY := 0 Local nX := 0 Local cDoc := "" Local nReg := 1 Private lMsErroAuto := .F. Private lMsHelpAuto := .T. PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" USER "ADMIN" PASSWORD "1234" cDoc := "SC0001" //Número de la SC que se utilizará en la aprobación SC1->(dbSeek(xFilial("SC1")+cDoc)) //Debe seleccionarse aadd(aCabec,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aCabec,{"C1_NUM" ,cDoc}) aadd(aCabec,{"C1_EMISSAO" ,dDataBase}) aadd(aCabec,{"C1_SOLICIT" ,"Administrador"}) aadd(aCabec,{"C1_APROV" ,"B"}) //Informar "L - Liberado" / "R - Rechazado" / "B - Bloqueado" aadd(aCabec,{"C1_ITEM" ,"0001"}) //Informe si aprobación es por Ítem, si fuera SC entera, no es necesario informar C1_ITEM For nX := 1 To nTotItens aLinha := {} aadd(aLinha,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aLinha,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil}) aadd(aLinha,{"C1_PRODUTO",PadR("01",TamSx3("C1_PRODUTO")[1]),Nil}) aadd(aLinha,{"C1_LOCAL" ,"01",Nil}) aadd(aLinha,{"C1_QUANT" ,nX,Nil}) aadd(aItens,aLinha) Next nX MsExecAuto({|u,v,x,y,z| MATA110(u,v,x)},aCabec,aItens,nOpc) If !lMsErroAuto ConOut(OemToAnsi(" Incluido SC: ")+cDoc) Else MostraErro() ConOut(OemToAnsi("¡Error en la inclusión!")) EndIf Next nY RESET ENVIRONMENT Return |