#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