Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Exemplo de Execução Automática Solicitações

Ejemplo de ejecución automática solicitudes de Compras - MATA110

Linha ProdutoProduto, Centro de Custo, Conta Contábil, Item Contábil, Classe ValorBanco Dados Operacionalis

Línea de

producto:

Protheus

Segmento:

Manufatura

Manufactura

Módulo:

SIGACOM

RotinaRutina:

Rotina

Rutina

Nome Técnico

Nombre técnico

MATA110

Solicitação

Solicitud de

Compras

compras

Registros iniciales

Producto, centro de costo, cuenta contable, ítem contable y clase valor

Cadastros Iniciais:

Tickets relacionados

769289

Requisito:

DMANMAT02-226

País(es):

Todos

Base(s) de

datos:

Todos

Tabelas UtilizadasTablas:

SC1, SB1, SCX, AFG

Sistema(s)

operativo(

s):

Todos


ExecAuto MATA110 

DescriçãoEssa rotina o qualquer Solicitação de Compras de mercadorias na A entrada das solicitações inicia o processo Sintaxe Solicitação RetornoObservaçõesA opção Aprovação) da rotina automática do MATA110 está disponível apenas para quem não utiliza o O aprovação devera conter o no cabeçalho. É necessário informar o valor desejado Rejeitado dessa forma o a liberaçãorejeição/bloqueio será realizada sem

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 Fontefuente:

MATA110.prw

Devolución:

NIL

ParâmetrosParámetros:

Nome

Nombre

Tipo

Descrição

Descripción

Default

Estándar

PARAMIXB1

Vetor

Vector

Array

contendo o cabeçalho da Solicitação de Compras

que contiene el encabezado de la solicitud de compras { {"C1_NUM", "CONTEUDO"} ...}


PARAMIXB2

Vetor

Vector

Array

contendo os itens da Solicitação de Compras

que contiene los ítems de la solicitud de compras { {"C1_ITEM",StrZero(nx,len(SC1->C1_ITEM) } ...}


PARAMIXB3

Numérico

Opção desejada

Opción deseada: 3-

Inclusão;

Inclusión 4-

Alteração ;

Modificación  5-

Exclusão ;

Eliminación  7-

Aprovação

Aprobación (

Somente versão

Solamente versión Protheus 10)

3

PARAMIXB4

Lógico

Controle Interno

Control interno - Informa si la rutina se

a rotina é chamada via

llama a través del MRP.

.F.

PARAMIXB5

Lógico

Indica

se apresenta ou não a Dialog da Rotina Automática

si muestra o no la Dialog de la rutina automática.

.F.

PARAMIXB6

Vetor

Vector

Array

contendo Rateio

que contiene el prorrateo SC { {C1_ITEM,{ {"CX_CAMPO","CONTEUDO"},... } }, ...}

{}

PARAMIXB7

Vetor

Vector

Array

contendo Rateio Projeto

que contiene el prorrateo Proyecto { {C1_ITEM,{ {"AFG_CAMPO","CONTEUDO"},... } }, ...}

{}

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
"R" =

Rechazado
"B" = Bloqueado

Realizando

de esta manera el RDMAKE,

la liberación/

rechazo/bloqueo se realizará sin problemas.

 

Exemplo Ejemplo 1 - Teste Prueba de Inclusão, Alteração e Exclusão SimplesInclusión, Modificación y Eliminación 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 Apertura del entorno  |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ConOut(Repl("-",80))

ConOut(PadC(OemToAnsi("Teste Prueba de Inclusao, Alteracao e Exclusao de Solicitacao inclusión, modificación y eliminación de solicitud de Compras"),80))

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SC1","SB1"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificacao do ambiente para teste Verificación del entorno para prueba |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SC1")
DbSelectArea("SB1")
DbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produtoRegistrar producto: 01"))
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produtoRegistrar producto: 02"))
EndIf

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Inicia o teste la prueba |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lOk
ConOut(OemToAnsi("Inicio: ")+Time())
For nY := 1 To 2
ConOut(PadC(OemToAnsi("Inicio Repeticao Repetición " + cValToChar(nY)),80))
aCabSC := {}
aItensSC := {}

If lAuxInclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verifica numero da 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

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta cabecalho encabezado |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta itens ítems |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Inclusao Inclusión de SC com con 2 itensí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

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Inclusao inclusión - Execução Ejecución Rotina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi(" Incluido com sucesso¡Incluido con éxito! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na inclusao¡Error al incluir!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Pega Ultima Toma última SC |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SC1->(dbSetOrder(1))
SC1->(DbGoTop())
While SC1->(!Eof())
cDoc := SC1->C1_NUM
SC1->(DbSkip())
EndDo
EndIf

If lAuxAltera
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Alteração modificación - Monta cabecalho encabezado |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Alteração modificación - Monta itens ítems |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Alteracao Modificación de SC para 3 itensí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

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Alteração modificación - Execução Rotina Ejecución Rutina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y,4)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi(" Alterado com sucesso¡Modificado con éxito! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na alteracao¡Error al modificar!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf

If lAuxExclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Exclusão eliminación - Monta cabecalho encabezado |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Exclusao de SC"))
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Exclusão eliminación - Monta itens ítems |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aItensSC := {}

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Exclusão eliminación - Execução Rotina Ejecución Rutina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y,5)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("Excluido com sucesso¡Eliminado con éxito!")+cDoc)
Else
ConOut(OemToAnsi("Erro na exclusao¡Error al eliminar!"+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 Cierre del entorno |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RESET ENVIRONMENT

Return(.T.)


Exemplo Ejemplo 2 - Teste Prueba de Inclusão, Alteração e Exclusão - Com Rateioinclusión, Modificación y Eliminación - 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"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificacao do ambiente para teste Verificación del entorno para prueba |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SC1")
DbSelectArea("SB1")
DbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produtoRegistrar producto: 01"))
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produtoRegistrar producto: 02"))
EndIf

DbSelectArea("CTT")
DbSetOrder(1)
If !CTT->(MsSeek(xFilial("CTT")+"CC01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar Registrar centro de custocosto: CC01 (Rotina CTBA180)"))
EndIf
If !CTT->(MsSeek(xFilial("CTT")+"CC02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar Registrar centro de custocosto: CC02 (Rotina CTBA180)"))
EndIf

DbSelectArea("CT1")
DbSetOrder(1)
If !CT1->(MsSeek(xFilial("CT1")+"CTA01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar contaRegistrar cuenta: CTA01 (Rotina CTBA020)"))
EndIf
If !CT1->(MsSeek(xFilial("CT1")+"CTA02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar contaRegistrar cuenta: CTA02 (Rotina CTBA020)"))
EndIf

/*DbSelectArea("CTD")
DbSetOrder(1)
If !CTD->(MsSeek(xFilial("CTD")+"IT01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar item contabilRegistrar ítem contable: IT01 (Rotina CTBA180)"))
EndIf
If !CTD->(MsSeek(xFilial("CTD")+"IT02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar item contabilRegistrar ítem contable: IT02 (Rotina CTBA180)"))
EndIf*/

/*DbSelectArea("CTH")
DbSetOrder(1)
If !CTH->(MsSeek(xFilial("CTH")+"CV01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar classe Registrar clase valor: CV01 (Rotina CTBA180)"))
EndIf
If !CTH->(MsSeek(xFilial("CTH")+"CV02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar classe Registrar clase valor: CV02 (Rotina CTBA180)"))
EndIf*/

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Inicia o teste la prueba |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lOk
ConOut(OemToAnsi("Inicio: ")+Time())
For nY := 1 To 2
ConOut(PadC(OemToAnsi("Inicio Repeticao repetición " + cValToChar(nY)),80))
aCabSC := {}
aItensSC := {}

If lAuxInclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//|Verifica numero da 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


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta cabecalho encabezado |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta itens ítems |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Inclusao Inclusión de SC com con 2 itens ítems - COM RATEIO 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)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta itens rateio ítems prorrateo |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aAdd(aRateioCX,{StrZero(nX,len(SC1->C1_ITEM)),{}}) //Item da SC1

// Primeiro item do rateioPrimer í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 item do rateioí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

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Executa rotina automatica Ejecuta rutina automática |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,3,aRateioCX)

If !lMsErroAuto
ConOut(OemToAnsi("Incluido com sucesso¡Incluido con éxito!")+cDoc)
Else
ConOut(OemToAnsi("Erro na inclusao¡Error al incluir!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Pega Ultima Toma última SC |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SC1->(dbSetOrder(1))
SC1->(DbGoTop())
While SC1->(!Eof())
cDoc := SC1->C1_NUM
SC1->(DbSkip())
EndDo
EndIf

If lAuxAltera
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Alteração modificación - Monta cabecalho encabezado |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Alteração modificación - Monta itens ítems |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Alteracao Modificación de SC para 3 itens ítems - COM RATEIO 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)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta itens rateio ítems prorrateo |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aAdd(aRateioCX,{StrZero(nX,len(SC1->C1_ITEM)),{}}) //Item da SC1

// Primeiro item do rateioPrimer í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 item do rateioí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

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Executa rotina automatica Ejecuta rutina automática |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,4,aRateioCX)

If !lMsErroAuto
ConOut(OemToAnsi("Alterado com sucesso¡Modificado con éxito!")+cDoc)
Else
ConOut(OemToAnsi("Erro na alteracao¡Error al modificar!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf

If lAuxExclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Exclusão eliminación - Monta cabecalho encabezado |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Exclusao Eliminación de SC - COM RATEIO CON PRORRATEO SCX"))
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste Prueba de Exclusão eliminación - Monta itens ítems |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aItensSC := {}
aRateioCX := {}

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Executa rotina automatica Ejecuta rutina automática |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,5,aRateioCX)

If !lMsErroAuto
ConOut(OemToAnsi("Excluido com sucesso¡Eliminando con éxito! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na exclusao¡Error al eliminar!"+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 Cierre del entorno |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RESET ENVIRONMENT

Return