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. |
#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.)
#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
#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
#Include "Protheus.ch" #Include "RwMake.ch" #Include "TbiConn.ch" User Function EXEC110() Local aCabec := {} Local aItens := {} Local aLinha := {} Local nOpc := 4 Local nTotItens := 3 Local nY := 0 Local nX := 0 Local cDoc := "" Local nReg := 1 Local cInicio := "" Local cTimeIni := "" Private lMsErroAuto := .F. Private lMsHelpAuto := .T. PREPARE ENVIRONMENT EMPRESA "T1" SUCURSAL "D MG 01" MÓDULO "COM" cInicio := "Inicio: " + Time() cTimeIni := Time() Conout(cInicio) For nY := 1 To nReg aCabec := {} aItens := {} lMsErroAuto := .F. If nOpc == 3 cDoc := "SCTOT1" Elseif nOpc <> 3 cDoc := "SCTOT1" SC1->(dbSeek(xFilial("SC1")+cDoc)) Endif aadd(aCabec,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aCabec,{"C1_NUM" ,cDoc}) aadd(aCabec,{"C1_EMISSAO" ,dDataBase}) aadd(aCabec,{"C1_SOLICIT" ,"Administrador"}) For nX := 1 To nTotItens aLinha := {} aadd(aLinha,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aLinha,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil}) If nX%2 == 0 aadd(aLinha,{"C1_PRODUTO",PadR("TT005",TamSx3("C1_PRODUTO")[1]),Nil}) aadd(aLinha,{"C1_LOCAL" ,"01",Nil}) Else aadd(aLinha,{"C1_PRODUTO",PadR("TT006",TamSx3("C1_PRODUTO")[1]),Nil}) aadd(aLinha,{"C1_LOCAL" ,"01",Nil}) Endif aadd(aLinha,{"C1_QUANT" ,nX,Nil}) If nOpc == 4 aAdd(aLinha,{"LINPOS","C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM))}) If StrZero(nx,len(SC1->C1_ITEM)) == "0002" aAdd(aLinha,{"AUTDELETA","S" ,Nil}) Else aAdd(aLinha,{"AUTDELETA","N" ,Nil}) Endif Endif aadd(aItens,aLinha) Next nX MsExecAuto({|u,v,x,y,z| MATA110(u,v,x)},aCabec,aItens,nOpc) If !lMsErroAuto ConOut(OemToAnsi(" Modificada SC: ")+cDoc + " - " + AllTrim(Str(nY)) + " de " + AllTrim(Str(nReg))) Else MostraErro() ConOut(OemToAnsi("¡Error en la modificación!")) Exit EndIf Next nY Conout(cInicio + " - Final: " + Time() + " - Tempo total: " + ElapTime(cTimeIni,Time())) RESET ENVIRONMENT Return
#Include 'Protheus.ch' #include "tbiconn.ch" User Function MyMata110() Local aCabSC := {} Local aItensSC := {} Local aLinhaC1 := {} Local aProd := {"PRODTMKA2710001"} Local aHeaderBkp := {} Local nB1 Local nItens Local cDoc := "" Local lOk := .T. Local lAuxInclui := .T. Local lAuxAltera := .T. Local lAuxExclui := .T. Private lMsHelpAuto := .T. Private lMsErroAuto := .F. // Apertura del entorno | //PREPARE ENVIRONMENT EMPRESA "T1" SUCURSAL "D MG 01" MÓDULO "COM" TABLES "SC1","SB1" //Verificación del entorno para prueba DbSelectArea("SC1") DbSelectArea("SB1") DbSetOrder(1) For nB1 := 1 To Len(aProd) If !SB1->(MsSeek(xFilial("SB1")+PadR(aProd[nB1],TamSx3("B1_COD")[1]))) lOk := .F. ConOut(OemToAnsi("Registrar producto: "+aProd[nB1]+" " )) EndIf Next nB1 If lOk If lAuxInclui aCabSC := {} aItensSC := {} aLinhaC1 := {} cDoc := GetSXENum("SC1","C1_NUM") SC1->(dbSetOrder(1)) While SC1->(dbSeek(xFilial("SC1")+cDoc)) ConfirmSX8() cDoc := GetSXENum("SC1","C1_NUM") EndDo aadd(aCabSC,{"C1_NUM" ,cDoc}) aadd(aCabSC,{"C1_SOLICIT","Administrador"}) aadd(aCabSC,{"C1_EMISSAO",dDataBase}) For nItens := 1 To Len(aProd) aLinhaC1 := {} aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nItens,Len(SC1->C1_ITEM)),Nil}) aadd(aLinhaC1,{"C1_PRODUTO",PadR(aProd[nItens],TamSx3("B1_COD")[1]),Nil}) aadd(aLinhaC1,{"C1_QUANT" ,1 ,Nil}) aadd(aItensSC,aLinhaC1) Next nItens ////ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //Grabo el aHeader utilizado en la rutina de origen y lo borro posteriormente //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ aHeaderBkp := aHeader aHeader := {} MSExecAuto({|x,y,z| Mata110(x,y,z)},aCabSC,aItensSC,3) ////ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Restauración del aHeader de la rutina de origen después de la ejecución de MsExecAuto //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ aHeader := aHeaderBkp If !lMsErroAuto ConOut(OemToAnsi("¡Incluido con éxito! ")+cDoc) Else MostraErro() ConOut(OemToAnsi("¡Error en la inclusión!")+cDoc) EndIf EndIf If lAuxAltera aCabSC := {} aItensSC := {} aLinhaC1 := {} cDoc := "ZC0476" aadd(aCabSC,{"C1_NUM" ,cDoc}) aadd(aCabSC,{"C1_SOLICIT","Administrador"}) aadd(aCabSC,{"C1_EMISSAO",dDataBase}) For nItens := 1 To Len(aProd) aLinhaC1 := {} aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nItens,Len(SC1->C1_ITEM)),Nil}) aadd(aLinhaC1,{"C1_PRODUTO",PadR(aProd[nItens],TamSx3("B1_COD")[1]),Nil}) aadd(aLinhaC1,{"C1_QUANT" ,1 ,Nil}) aadd(aItensSC,aLinhaC1) Next nItens ////ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //Grabo el aHeader utilizado en la rutina de origen y lo borro posteriormente //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ aHeaderBkp := aHeader aHeader := {} MSExecAuto({|x,y,z| Mata110(x,y,z)},aCabSC,aItensSC,4) ////ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Restauración del aHeader de la rutina de origen después de la ejecución de MsExecAuto //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ aHeader := aHeaderBkp If !lMsErroAuto ConOut(OemToAnsi("¡Modificado con éxito! ")+cDoc) Else MostraErro() ConOut(OemToAnsi("¡Error en la modificación!")+cDoc) EndIf EndIf If lAuxExclui aCabSC := {} aItensSC := {} aLinhaC1 := {} cDoc := "ZC0477" aadd(aCabSC,{"C1_NUM" ,cDoc}) aadd(aCabSC,{"C1_SOLICIT","Administrador"}) aadd(aCabSC,{"C1_EMISSAO",dDataBase}) ////ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //Grabo el aHeader utilizado en la rutina de origen y lo borro posteriormente //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ aHeaderBkp := aHeader aHeader := {} MSExecAuto({|x,y,z| Mata110(x,y,z)},aCabSC,aItensSC,5) ////ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Restauración del aHeader de la rutina de origen después de la ejecución de MsExecAuto //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ aHeader := aHeaderBkp If !lMsErroAuto ConOut(OemToAnsi("¡Borrado con éxito! ")+cDoc) Else MostraErro() ConOut(OemToAnsi("¡Error en el borrado!"+cDoc)) EndIf EndIf EndIf //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Cierre del entorno | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ //RESET ENVIRONMENT Return(.T.)