Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Versiones:

Microsiga Protheus 8.11, Protheus 10, Protheus 11, Protheus 12

Compatible países:

Todos

Sistemas operativos:

Todos

Compatible a las bases de datos:

Todos

Nivel de acceso:

Nivel 1 (Acceso Clientes)

Idiomas:

Todos

Exemplos:code

DescriçãoDescripción

Essa rotina Esta rutina permite o el registro de qualquer cualquier Pedido de Compras de mercadorias na empresa. O cadastro do Pedido de Compras é o compras de mercaderías en la empresa. El registro del Pedido de compras es el contrato formal entre empresa e o fornecedorla empresa y el proveedor

Programa Fontefuente

MATA120.PRX

SintaxeSintaxis:

MATA120 - Pedido de Compras ( [ ExpN1 ] [ ExpA1 ] [ ExpA2 ] [ ExpN2 ] [ ExpL1 ] [ ExpA3] [ ExpA4 ] [ ExpA5 ])


Nome

Nombre

Tipo

Descrição

Descripción

Default

Estándar

Obrigatório

Obligatorio

Referência

Referencia

ExpN1

Numérico

Pedido de

Compras ou Autorização de Entrega

compras o Autorización de entrega




ExpA1

Array

Cabeçalho do

Encabezado del PC

ou

o AE




ExpA2

Array

Itens do

Ítems del PC

ou

o AE




ExpN2

Numérico

Opção da rotina

Opción de la rutina automática



3 -

Inclusão

Inclusión

4 -

Alteração

Modificación

5 -

Exclusão

Borrado

ExpL1

Lógico

Apresenta

Muestra Dialog (

Tela) da rotina

Pantalla) de la rutina automática




ExpA3

Array

Rateio

Prorrateo de Centro de

Custo

costo




ExpA4

Array

Adiantamento

Anticipo




ExpA5

Array

Rateio

Prorrateo de

Projeto

proyecto




RetornoDevolución

L (LogicoLógico) = .T. (Apresentou erroMuestra error) / .F. (OK)

ObservaçõesObservaciones

Informações
titleCampos cabeçalhoencabezado

Os Los campos de cabeçalho do encabezado del Pedido de Compras compras (C7_EMISSAO / C7_FORNECE / C7_LOJA / C7_COND / C7_CONTATO / C7_FILENT) deverão ser obrigatoriamente informados nesta rotinadeben informarse obligatoriamente en esta rutina.

Informações
titleCampos obrigatórios obligatorios - ItensÍtems

Os Los campos de itens do ítems del Pedido de Compras compras (C7_PRODUTO / C7_QUANT / C7_PRECO ) deverão ser obrigatoriamente informados nesta rotina/ C7_TOTAL) ), deben informarse obligatoriamente en esta rutina.

Informações
titleMoedaMoneda

Si se informa el Se informar o campo (C7_MOEDA), o el campo (C7_TXMOEDA) também devera ser informado nos itens do también debe informarse en los ítems del pedido.

Informações
titleAlterar ou Excluir pedidoModificar o Borrar pedido

Si modificara o borrara un Se for alterar ou excluir um pedido de compra, o el campo (C7_REC_WT) tem tiene que estar preenchido com o numero do completado con el número del registro (SC7->(Recno())

 

Alteração de

Modificación del Pedido de

Compras

compras:

Para

alterar/excluir item já existente no

modificar/borrar ítems existentes en el Pedido de

Compras, deve-se utilizar o LINPOS e

compras, debe utilizarse el LINPOS y AUTODELETA

Para incluir

um novo item em um pedido já existente, deve-se informar o

un nuevo ítem en un pedido existente, debe informarse el campo (C7_ITEM)

com um

con un registro

novo

nuevo,

e NÃO

y NO utilizar

o

el LINPOS

e

ni AUTODELETA.

Informações
titleVinculo Vínculo para atender solicitação solicitud de compras

Para que seja atendida a SC, deve-se informar os seguintes campos nos itens do Para  que se atienda la SC, deben informarse los siguientes campos en los ítems del PC.

C7_NUMSC (Numero

da solicitação

de la solicitud) = Informar

o numero da solicitação

el número de la solicitud de Compras que

originou o

originó el Pedido de

Compras

compras

C7_ITEMSC (

Item da solicitação

Ítem de la solicitud) = Informar

o item da solicitação

el ítem de la solicitud de compras que

esta

está vinculada

ao

al Pedido de

Compras

compras

C7_QTDSOL (

Quantidade

Cantidad pedido

da

de la SC) = Informar

a quantidade da solicitação

la cantidad de la solicitud de compras vinculada

ao

al Pedido de

Compras

compras

Informações
titleRateio Prorrateo - Centro de Custocosto
O

El array de centro de

custo deve ser passado com todos os campos e seguindo a mesma ordem do exemplo abaixo

costo debe transferirse con todos los campos y siguiendo el mismo orden del siguiente ejemplo

Informações
titleRateio Prorrateo - ProjetoProyecto

(

Opção disponível a partir da versão

Opción disponible a partir de la versión 11)

O array de projeto deve ser passado com todos os campos e seguindo a mesma ordem do exemplo abaixo

El array del proyecto debe transferirse con todos los campos y siguiendo el mismo orden del siguiente ejemplo.

Informações
titleAdiantamentoAnticipo

O El array de adiantamento deve ser passado com todos os campos e seguindo a mesma ordem do exemplo abaixoanticipo debe transferirse con todos los campos y siguiendo el mismo orden del siguiente ejemplo.

Informações
titleInicializando Ambienteentorno

PREPARE ENVIRONMENTNa preparação do ambiente deve ser utilizado o usuário e senha, pois o sistema utiliza o usuário do

En la preparación del entorno debe utilizarse el usuario y contraseña, porque el sistema utiliza el usuario del sistema(RetCodUsr()) para realizar

a gravação do

la grabación del campo C7_USER.   

Exemplo

Ejemplo

PREPARE ENVIRONMENT EMPRESA "01"

FILIAL

SUCURSAL "1001" USER "

usuário

usuario" PASSWORD "****"

MODULO

MÓDULO "COM"

Informações
titleValor Freteflete

Las informaciones del frete deben enviarse en el encabezado del

As informações do frete devem ser enviadas no cabeçalho do

pedido de compras.

C7_TPFRETE (Tipo

Frete

flete)

C7_FRETE (Valor

Frete

flete)

 

Observação

Observación:

O

El valor informado

no

en el campo C7_FRETE (Valor

Frete

flete) corresponde

ao

al valor TOTAL

do frete daquele pedido, então se houver 2 ou mais itens esse valor sera rateado entre a quantidade de itens do pedido e seu valor ficar salvo no

del flete de aquel pedido, entonces si hubiera 2 o más ítems, este valor será prorrateado entre la cantidad de ítems del pedido y su valor quedará grabado en el campo C7_VALFRE (Valor

Frete

flete)

Ex

Ej.:

C7_FRETE = 10

e

y PC

tem

tiene 1

Item

Ítem

C7_VALFRE (Valor

Frete

flete) = 10

 

C7_FRETE = 20

e

y PC

tem

tiene 4

Itens

Ítems

C7_VALFRE (Valor

Frete

flete) = 5 (

Em

En cada

item

ítem, totalizando

os

los 20 informados

no

en C7_FRETE)

Informações
titleDescuentos

Las informaciones de descuento deben enviarse en el encabezamiento o ítems del pedido de compras.

 

Informadas vía encabezado:

C7_DESC1 / C7_DESC2 / C7_DESC3

 

Informadas vía ítems:

C7_VLDESC / C7_DESC

 

Observación:

El porcentaje informado en el campo C7_DESC1, se aplicará en cada ítem del pedido.

El porcentaje del campo C7_DESC2, se aplicará al valor menos lo informado en el campo C7_DESC1.

El porcentaje del campo C7_DESC3, se aplicará al valor menos lo informado en el campo C7_DESC1 menos lo informado en C7_DESC2.

Ej:

Ítem 0001 - Total: 1000,00

Ítem 0002 - Total: 2000,00

C7_DESC1 = 10%

C7_DESC2 = 20%

C7_DESC3 = 50%

 

Calculo después C7_DESC1 = 10%

Ítem 0001 = 1000*10/100 = 100,00

Ítem 0002 = 2000*10/100 = 200,00

Total de descuento = R$ 300,00, Total del pedido: R$ 2700,00


Calculo después C7_DESC2 = 20%

Ítem 0001 = 900*20/100 = 180,00

Ítem 0002 = 1800*20/100 = 360,00

Total de descuento = R$ 840,00, Total del pedido: R$ 2160,00


Calculo después C7_DESC3 = 50%

Ítem 0001 = 720*50/100 = 360,00

Ítem 0002 = 1440*10/100 = 720,00

Total de descuento = R$ 1920,00, Total del pedido: R$ 1080,00


Ejemplos:

Bloco de código
languagedelphi
themeMidnight
titleInclusión PC - Prorrateo de CC / Proyecto / Anticipo
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User FUnction EXEC121()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aRatCC := {}
Local aRatPrj := {}
Local aAdtPC := {}
Local aItemPrj := {{"01","02"},{"02","01"}} //Proyecto, Tarea
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentaje,Centro de costo, Cuenta contable, Ítem Cuenta, CLVL
Local nX := 0
Local cDoc := ""
Local nOpc := 3

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MÓDULO "COM"

dbSelectArea("SC7")

//Prueba de inclusión
cDoc := GetSXENum("SC7","C7_NUM")
SC7->(dbSetOrder(1))
While SC7->(dbSeek(xFilial("SC7")+cDoc))
ConfirmSX8()
cDoc := GetSXENum("SC7","C7_NUM")
EndDo
languagedelphi
themeMidnight
titleInclusão PC - Rateio de CC / Projeto / Adiantamento
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User FUnction EXEC121()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aRatCC := {}
Local aRatPrj := {}
Local aAdtPC := {}
Local aItemPrj := {{"01","02"},{"02","01"}} //Projeto, Tarefa
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentagem,Centro de Custo, Conta Contabil, Item Conta, CLVL
Local nX := 0
Local cDoc := ""
Local nOpc := 3

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM"

dbSelectArea("SC7")

//Teste de Inclusão
cDoc := GetSXENum("SC7","C7_NUM")
SC7->(dbSetOrder(1))
While SC7->(dbSeek(xFilial("SC7")+cDoc))
ConfirmSX8()
cDoc := GetSXENum("SC7","C7_NUM")
EndDo

aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_COND" ,"001"})
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENTNUM" ,cFilAntcDoc})
aadd(aCabec,{"C7_TPFRETEEMISSAO" ,"C"dDataBase})
aadd(aCabec,{"C7_FRETEFORNECE" ,15})

For nX := 1 To 1
aLinha := {}
aadd(aLinha"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_PRODUTOCOND" ,"0001001",Nil})
aadd(aLinhaaCabec,{"C7_QUANTCONTATO" ,1 ,Nil"AUTO"})
aadd(aLinhaaCabec,{"C7_PRECOFILENT" ,100 ,NilcFilAnt})
aadd(aLinhaaCabec,{"C7_TOTALTPFRETE" ,100 ,Nil"C"})
aadd(aItens,aLinha)
Next nX

//Rateio Centro de Custo
aAdd(aRatCC, Array(2))
aRatCC[1][1] := "0001"
aRatCC[1][2] := {}

For nX := 1 To Len(aCCusto)aCabec,{"C7_FRETE" ,15})

For nX := 1 To 1
aLinha := {}
aAddaadd(aLinha, {"CHC7_FILIALPRODUTO" , xFilial("SCH0001"), Nil})
aAddaadd(aLinha, {"CHC7_ITEMQUANT" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), 1 ,Nil})
aadd(aLinha,{"C7_PRECO" ,100 ,Nil})
aAddaadd(aLinha, {"CHC7_PERCTOTAL" ,100 aCCusto[nX][1], Nil})
aAddaadd(aItens,aLinha, {"CH_CC" , aCCusto[nX][2], Nil})
aAdd(aLinha, {"CH_CONTA" , aCCusto[nX][3], Nil})
)
Next nX

//Prorrateo Centro de costo
aAdd(aRatCC, Array(2))
aRatCC[1][1] := "0001"
aRatCC[1][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_ITEMCTAFILIAL" , aCCusto[nX][4]xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_CLVLITEM" , aCCusto[nX][5]PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})

aAdd(aRatCC[1][2], aClone(aLinha))
Next nX

//Rateio Projeto
aAdd(aRatPrj, Array(2))
aRatPrj[1aLinha, {"CH_PERC" , aCCusto[nX][1] := "0001"
aRatPrj[1, Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], := {}

For nX := 1 To Len(aItemPrj)
aLinha := {}
Nil})
aAdd(aLinha, {"AJ7CH_FILIALCONTA" , xFilial("AJ7") aCCusto[nX][3], Nil})
aAdd(aLinha, {"AJ7CH_PROJETITEMCTA" , aItemPrjaCCusto[nX][14], Nil})
aAdd(aLinha, {"AJ7CH_TAREFACLVL" , PadR(aItemPrjaCCusto[nX][25],TamSX3("AF9_TAREFA")[1]), Nil})

aAdd(aLinha, {"AJ7_NUMPC" , cDoc , Nil})
aAdd(aLinha, {"AJ7_ITEMPC" , "0001" , Nil})aRatCC[1][2], aClone(aLinha))
Next nX

//Prorrateo Proyecto
aAdd(aRatPrj, Array(2))
aRatPrj[1][1] := "0001"
aRatPrj[1][2] := {}

For nX := 1 To Len(aItemPrj)
aLinha := {}
aAdd(aLinha, {"AJ7_CODFILIAL" , xFilial("0001AJ7") , Nil})
aAdd(aLinha, {"AJ7_QUANTPROJET" , aItemPrj[nX][1 ], Nil})
aAdd(aLinha, {"AJ7_REVISATAREFA" , "0001" PadR(aItemPrj[nX][2],TamSX3("AF9_TAREFA")[1]), Nil})
aAdd(aRatPrj[1][2], aClone(aLinha))
Next nX

//Adiantamento
aLinha := {}aLinha, {"AJ7_NUMPC" , cDoc , Nil})
aAdd(aLinha, {"FIEAJ7_FILIALITEMPC" , xFilial("FIE0001" , Nil})
aAdd(aLinha,                                                            Nil}) {"AJ7_COD" , "0001" , Nil})
aAdd(aLinha, {"AJ7_QUANT" , 1 , Nil})
aAdd(aLinha, {"AJ7_REVISA" , "0001" , Nil})
aAdd(aRatPrj[1][2], aClone(aLinha))
Next nX

//Anticipo
aLinha := {}
aAdd(aLinha, {"FIE_CARTFILIAL",   xFilial("PFIE"),                                                                        Nil}) // Carteira pagar                                                       Nil})
aAdd(aLinha, {"FIE_PEDIDOCART",   "P" ,                                                                       Nil}) // Não precisa, pois quem trata é a MATA120
aAdd(aLinha, {"FIE_PREFIX", PadR("A", TamSX3("FIE_PREFIX")[1]),                                                                Nil}) //Prefixo Cartera por pagar
aAdd(aLinha, {"FIE_NUMPEDIDO",    PadR("PAPC01" , TamSX3("FIE_NUM")[1]),            Nil}) //Numero Titulo
aAdd(aLinha, {"FIE_PARCEL", PadR("1", TamSX3("FIE_PARCEL")[1]),                  Nil}) //Parcela
aAdd(aLinha, {"FIE_TIPO",   PadR("PA", TamSX3("FIE_TIPO")[1]),                       Nil}) //Tipo = PA                                                                      Nil}) // No necesita, pues quién trata es MATA120
aAdd(aLinha, {"FIE_FORNECPREFIX", PadR("001 A", TamSX3("FIE_FORNECPREFIX")[1]),          Nil}) // Fornecedor
aAdd(aLinha,              Nil}) //Prefijo
aAdd(aLinha, {"FIE_LOJANUM",     PadR("01PAPC01", TamSX3("FIE_LOJANUM")[1]),                        NilNil}) //LojaNúmero título
aAdd(aLinha, {"FIE_VALORPARCEL",  100PadR("1",                                                                     Nil}) // Valor do pa que está vinculado ao pedido
aAdd(aAdtPC, aClone(aLinha))  

MSExecAuto({|a,b,c,d,e,f,g,h| MATA120(a,b,c,d,e,f,g,h)},1,aCabec,aItens,nOpc,.F.,aRatCC,aAdtPC,aRatPrj)

If !lMsErroAuto
ConOut("Incluido PC: "+cDoc)
Else
ConOut("Erro na inclusao!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return
Bloco de código
languagedelphi
themeMidnight
titleAlteração PC - Rateio de CC / Projeto / Adiantamento
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User FUnction EXEC121()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aRatCC := {}
Local aRatPrj := {}
Local aAdtPC := {}
Local aItemPrj := {{"01","02"},{"02","01"}} //Projeto, Tarefa
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentagem,Centro de Custo, Conta Contabil, Item Conta, CLVL
Local nX := 0
Local cDoc := ""
Local nOpc := 4

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM"

dbSelectArea("SC7")

//Teste de alteração
cDoc := "000054" //Informar PC ou AE (Alteração / Exclusão)

aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_COND" ,"006"}) // Condição de pagamento que permite adiantamento
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

aLinha := {}

// Alterar item existente
aadd(aLinha,{"C7_ITEM" ,"0001" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,"0001",Nil})
aadd(aLinha,{"C7_QUANT" ,10,Nil})
aadd(aLinha,{"C7_PRECO" ,10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,100 ,Nil})
aAdd(aLinha,{"LINPOS","C7_ITEM" ,"0001"})
aAdd(aLinha,{"AUTDELETA","N" ,Nil})
aadd(aItens,aLinha)

aLinha := {}
// Incluir novo item no pedido
aadd(aLinha,{"C7_ITEM" ,"0002" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,"0002",Nil})
aadd(aLinha,{"C7_QUANT" ,20,Nil})
aadd(aLinha,{"C7_PRECO" ,10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,200 ,Nil}) 

aadd(aItens,aLinha)

//alterado Rateio Centro de Custo do item existente
aAdd(aRatCC, Array(2))
aRatCC[1][1] := "0001"
aRatCC[1][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})

aAdd(aRatCC[1][2], aClone(aLinha))
Next nX

//Rateio Centro de Custo novo item
aAdd(aRatCC, Array(2))
aRatCC[2][1] := "0002"
aRatCC[2][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})

aAdd(aRatCC[2][2], aClone(aLinha))
Next nX
// pa já existente no financeiro.
aLinha := {}
aAdd(aLinha, {"FIE_FILIAL", xFilial("FIE"),                                 Nil})
aAdd(aLinha, {"FIE_CART",   "P",                                            Nil}) // Carteira pagar
aAdd(aLinha, {"FIE_PEDIDO", cDoc,                                           Nil}) // Numero pedido de compras
aAdd(aLinha, {"FIE_PREFIX", PadR("A", TamSX3("FIE_PREFIX")[1]),             Nil}) //Prefixo
aAdd(aLinha, {"FIE_NUM",    PadR("PAPC01", TamSX3("FIE_NUM")[1]),           Nil}) //Numero Titulo
aAdd(aLinha, {"FIE_PARCEL", PadR("1", TamSX3("FIE_PARCEL")[1]),             Nil}) //Parcela
aAdd(aLinha, {"FIE_TIPO",   PadR("PA", TamSX3("FIE_TIPO")[1]),              Nil}) //Tipo = PA
aAdd(aLinha, {"FIE_FORNEC", PadR("001", TamSX3("FIE_FORNEC")[1]),        Nil}) // Fornecedor
aAdd(aLinha, {"FIE_LOJA",   PadR("01", TamSX3("FIE_LOJA")[1]),              Nil}) //Loja
aAdd(aLinha, {"FIE_VALOR",  300,                                            Nil}) // Valor do pa que está vinculado ao pedido
aAdd(aAdtPC, aClone(aLinha))  

MSExecAuto({|a,b,c,d,e,f,g,h| MATA120(a,b,c,d,e,f,g,h)},1,aCabec,aItens,nOpc,.F.,aRatCC,aAdtPC)
If !lMsErroAuto
ConOut("Alterado PC: "+cDoc)
Else
ConOut("Erro na alteracao!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return
 TamSX3("FIE_PARCEL")[1]),                  Nil}) //Cuota
aAdd(aLinha, {"FIE_TIPO",   PadR("PA", TamSX3("FIE_TIPO")[1]),                       Nil}) //Tipo = PA
aAdd(aLinha, {"FIE_FORNEC", PadR("001 ", TamSX3("FIE_FORNEC")[1]),          Nil}) // Proveedor
aAdd(aLinha, {"FIE_LOJA",   PadR("01", TamSX3("FIE_LOJA")[1]),                       Nil}) //Tienda
aAdd(aLinha, {"FIE_VALOR",  100,                                                                     Nil}) // Valor del pa que está vinculado al pedido
aAdd(aAdtPC, aClone(aLinha))  

MSExecAuto({|a,b,c,d,e,f,g,h| MATA120(a,b,c,d,e,f,g,h)},1,aCabec,aItens,nOpc,.F.,aRatCC,aAdtPC,aRatPrj)

If !lMsErroAuto
ConOut("Incluido PC: "+cDoc)
Else
ConOut("¡Error en la inclusión!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return
Bloco de código
languagedelphi
themeMidnight
titleModificación PC - Prorrateo de CC / Proyecto / Anticipo
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User FUnction EXEC121()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aRatCC := {}
Local aRatPrj := {}
Local aAdtPC := {}
Local aItemPrj := {{"01","02"},{"02","01"}} //Proyecto, Tarea
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentaje,Centro de costo, Cuenta contable, Ítem Cuenta, CLVL
Local nX := 0
Local cDoc := ""
Local nOpc := 4

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MÓDULO "COM"

dbSelectArea("SC7")

//Prueba de modificación
cDoc := "000054" //Informar PC o AE (Modificación / Borrado)

aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_COND" ,"006"}) // Condición de pago que permite anticipo
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

aLinha := {}

// Modificar ítem existente
aadd(aLinha,{"C7_ITEM" ,"0001" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,"0001",Nil})
aadd(aLinha,{"C7_QUANT" ,10,Nil})
aadd(aLinha,{"C7_PRECO" ,10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,100 ,Nil})
aAdd(aLinha,{"LINPOS","C7_ITEM" ,"0001"})
aAdd(aLinha,{"AUTDELETA","N" ,Nil})
aadd(aItens,aLinha)

aLinha := {}
// Incluir nuevo ítem en el pedido
aadd(aLinha,{"C7_ITEM" ,"0002" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,"0002",Nil})
aadd(aLinha,{"C7_QUANT" ,20,Nil})
aadd(aLinha,{"C7_PRECO" ,10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,200 ,Nil}) 

aadd(aItens,aLinha)

//modificado Prorrateo Centro de costo del ítem existente
aAdd(aRatCC, Array(2))
aRatCC[1][1] := "0001"
aRatCC[1][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})

aAdd(aRatCC[1][2], aClone(aLinha))
Next nX

//Prorrateo Centro de costo nuevo ítem
aAdd(aRatCC, Array(2))
aRatCC[2][1] := "0002"
aRatCC[2][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})

aAdd(aRatCC[2][2], aClone(aLinha))
Next nX
// pa existente en el financiero.
aLinha := {}
aAdd(aLinha, {"FIE_FILIAL", xFilial("FIE"),                                 Nil})
aAdd(aLinha, {"FIE_CART",   "P",                                            Nil}) // Cartera por pagar
aAdd(aLinha, {"FIE_PEDIDO", cDoc,                                           Nil}) // Número pedido de compras
aAdd(aLinha, {"FIE_PREFIX", PadR("A", TamSX3("FIE_PREFIX")[1]),             Nil}) //Prefijo
aAdd(aLinha, {"FIE_NUM",    PadR("PAPC01", TamSX3("FIE_NUM")[1]),           Nil}) //Número título
aAdd(aLinha, {"FIE_PARCEL", PadR("1", TamSX3("FIE_PARCEL")[1]),             Nil}) //Cuota
aAdd(aLinha, {"FIE_TIPO",   PadR("PA", TamSX3("FIE_TIPO")[1]),              Nil}) //Tipo = PA
aAdd(aLinha, {"FIE_FORNEC", PadR("001", TamSX3("FIE_FORNEC")[1]),        Nil}) // Proveedor
aAdd(aLinha, {"FIE_LOJA",   PadR("01", TamSX3("FIE_LOJA")[1]),              Nil}) //Tienda
aAdd(aLinha, {"FIE_VALOR",  300,                                            Nil}) // Valor del pa que está vinculado al pedido
aAdd(aAdtPC, aClone(aLinha))  
Bloco de código
languagedelphi
themeMidnight
titleExclusão PC
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User FUnction EXEC121()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aRatCC := {}
Local aRatPrj := {}
Local aAdtPC := {}
Local aItemPrj := {{"01","02"},{"02","01"}} //Projeto, Tarefa
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentagem, Centro de Custo, Conta Contábil, Item Conta, CLVL
Local nX := 0
Local nOpc := 5
Local cDoc := "000054" 

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM"

dbSelectArea("SC7")

aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_COND" ,"001"})
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

For nX := 1 To 1
aLinha := {}

aadd(aLinha,{"C7_ITEM" ,StrZero(nX,4) ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),Nil})
aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
aadd(aLinha,{"C7_PRECO" ,150 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,150 ,Nil})
aadd(aItens,aLinha)
Next nX

MSExecAuto({|a,b,c,d,e,f,g,h| MATA120(a,b,c,d,e,f,g,h)},1,aCabec,aItens,nOpc,.F.,aRatCC,aAdtPC)

If !lMsErroAuto
ConOut("ExclusaoAlterado PC: "+cDoc)
Else
ConOut("Erro¡Error en nala exclusãomodificación!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return

Ejemplos:

...

Bloco de código
languagedelphi
themeMidnight
titleBorrado PC
collapsetrue
#Include "Protheus.ch"

...


#Include "RwMake.ch"

...


#Include "TbiConn.ch"

...



User FUnction EXEC121()

...



Local aCabec := {}

...


Local aItens := {}

...


Local aLinha := {}

...


Local aRatCC := {}

...


Local aRatPrj := {}

...


Local aAdtPC := {}

...


Local aItemPrj := {{"01","02"},{"02","01"}} //Proyecto, Tarea

...


Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentaje, Centro de costo, Cuenta contable, Ítem

...

 Cuenta, CLVL

...


Local nX :=

...

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MODULO "COM"

 0
Local nOpc := 5
Local cDoc := "000054" 

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MÓDULO "COM"

dbSelectArea("SC7")

...



aadd(aCabec,{"C7_NUM"

...

 ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})

...


aadd(aCabec,{"C7_FORNECE" ,"001 "})

...


aadd(aCabec,{"C7_LOJA" ,"01"})

...


aadd(aCabec,{"C7_COND" ,"001"})

...


aadd(aCabec,{"C7_CONTATO" ,"AUTO"})

...


aadd(aCabec,{"C7_FILENT" ,cFilAnt})

...



For nX := 1 To 1

...


aLinha := {}

...



aadd(aLinha,{"C7_

...

ITEM" ,StrZero(nX,4) ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),Nil})

...


aadd(aLinha,{"C7_QUANT" ,1 ,Nil})

...


aadd(aLinha,{"C7_PRECO" ,

...

150 ,Nil})

...


aadd(aLinha,{"C7_TOTAL" ,

...

150 ,Nil})

...


aadd(aItens,aLinha)

...


Next

...

 nX

MSExecAuto({|a,b,c,d,e| MATA120(a,b,c,d,e)},1,aCabec,aItens,nOpc,.F.)

If !lMsErroAuto
ConOut("Borrado PC: "+cDoc)
Else
ConOut("¡Error en el borrado!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return
Bloco de código
languagedelphi
themeMidnight
titleInclusión PC con descuento ítem (C7_VLDESC)
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC120()

Local aCabec 	:= {}
Local aItens 	:= {}
Local aLinha 	:= {}
Local nX 		:= 0
Local cDoc 		:= ""
Local nOpc		:= 3

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" SUCURSAL "01" MÓDULO "COM" 

dbSelectArea("SC7")

//Prueba de inclusión 
If nOpc == 3
	cDoc := GetSXENum("SC7","C7_NUM")		
	SC7->(dbSetOrder(1))		
	While SC7->(dbSeek(xFilial("SC7")+cDoc))			
		ConfirmSX8()			
		cDoc := GetSXENum("SC7","C7_NUM")	
	EndDo
Endif

aadd(aCabec,{"C7_NUM" 		,cDoc})
aadd(aCabec,{"C7_EMISSAO" 	,dDataBase})
aadd(aCabec,{"C7_FORNECE" 	,"COM002"})
aadd(aCabec,{"C7_LOJA" 		,"01"})
aadd(aCabec,{"C7_COND" 		,"000"})
aadd(aCabec,{"C7_CONTATO" 	,"AUTO"})
aadd(aCabec,{"C7_FILENT" 	,cFilAnt})
	
For nX := 1 To 2 
	aLinha := {}
	aadd(aLinha,{"C7_ITEM" ,StrZero(nX,TamSX3("C7_ITEM")[1]),Nil})
	aadd(aLinha,{"C7_PRODUTO" ,"01",Nil})
	aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
	aadd(aLinha,{"C7_PRECO" ,nX*1000 ,Nil})
	aadd(aLinha,{"C7_TOTAL" ,nX*1000 ,Nil}) 
	
	If nX == 1
		aadd(aLinha,{"C7_VLDESC" ,150 ,Nil}) 
	Endif

	aadd(aItens,aLinha) 
Next nX 

MSExecAuto({|a,b,c,d,e,f,g| MATA120(a,b,c,d)},1,aCabec,aItens,nOpc)  
	
If !lMsErroAuto 
	ConOut("Se incluyó PC: " + cDoc) 
Else
	ConOut("¡Error en la inclusión!")   
	MostraErro()
EndIf

RESET ENVIRONMENT

Return
  
Bloco de código
languagedelphi
themeMidnight
titleInclusión PC con descuento ítem (C7_VLDESC/C7_DESC)
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC120()

Local aCabec 	:= {}
Local aItens 	:= {}
Local aLinha 	:= {}
Local nX 		:= 0
Local cDoc 		:= ""
Local nOpc		:= 3

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" SUCURSAL "01" MÓDULO "COM" 

dbSelectArea("SC7")

//Prueba de inclusión 
If nOpc == 3
	cDoc := GetSXENum("SC7","C7_NUM")		
	SC7->(dbSetOrder(1))		
	While SC7->(dbSeek(xFilial("SC7")+cDoc))			
		ConfirmSX8()			
		cDoc := GetSXENum("SC7","C7_NUM")	
	EndDo
Endif

aadd(aCabec,{"C7_NUM" 		,cDoc})
aadd(aCabec,{"C7_EMISSAO" 	,dDataBase})
aadd(aCabec,{"C7_FORNECE" 	,"COM002"})
aadd(aCabec,{"C7_LOJA" 		,"01"})
aadd(aCabec,{"C7_COND" 		,"000"})
aadd(aCabec,{"C7_CONTATO" 	,"AUTO"})
aadd(aCabec,{"C7_FILENT" 	,cFilAnt})
	
For nX := 1 To 2 
	aLinha := {}
	aadd(aLinha,{"C7_ITEM" ,StrZero(nX,TamSX3("C7_ITEM")[1]),Nil})
	aadd(aLinha,{"C7_PRODUTO" ,"01",Nil})
	aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
	aadd(aLinha,{"C7_PRECO" ,nX*1000 ,Nil})
	aadd(aLinha,{"C7_TOTAL" ,nX*1000 ,Nil}) 
	
	If nX == 1
		aadd(aLinha,{"C7_VLDESC" ,300 ,Nil})
		aadd(aLinha,{"C7_DESC" ,30 ,Nil}) //Porcentaje
		aadd(aItens,aLinha) 
	Endif
Next nX 

MSExecAuto({|a,b,c,d,e,f,g| MATA120(a,b,c,d)},1,aCabec,aItens,nOpc)  
	
If !lMsErroAuto 
	ConOut("Se incluyó PC: " + cDoc) 
Else
	ConOut("¡Error en la inclusión!")   
	MostraErro()
EndIf

RESET ENVIRONMENT

Return
  
Bloco de código
languagedelphi
themeMidnight
titleInclusión PC con descuento ítem (C7_VLDESC
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC120()

Local aCabec 	:= {}
Local aItens 	:= {}
Local aLinha 	:= {}
Local nX 		:= 0
Local cDoc 		:= ""
Local nOpc		:= 3

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" SUCURSAL "01" MÓDULO "COM" 

dbSelectArea("SC7")

//Prueba de inclusión 
If nOpc == 3
	cDoc := GetSXENum("SC7","C7_NUM")		
	SC7->(dbSetOrder(1))		
	While SC7->(dbSeek(xFilial("SC7")+cDoc))			
		ConfirmSX8()			
		cDoc := GetSXENum("SC7","C7_NUM")	
	EndDo
Endif

aadd(aCabec,{"C7_NUM" 		,cDoc})
aadd(aCabec,{"C7_EMISSAO" 	,dDataBase})
aadd(aCabec,{"C7_FORNECE" 	,"COM002"})
aadd(aCabec,{"C7_LOJA" 		,"01"})
aadd(aCabec,{"C7_COND" 		,"000"})
aadd(aCabec,{"C7_CONTATO" 	,"AUTO"})
aadd(aCabec,{"C7_FILENT" 	,cFilAnt})
	
For nX := 1 To 2 
	aLinha := {}
	aadd(aLinha,{"C7_ITEM" ,StrZero(nX,TamSX3("C7_ITEM")[1]),Nil})
	aadd(aLinha,{"C7_PRODUTO" ,"01",Nil})
	aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
	aadd(aLinha,{"C7_PRECO" ,nX*1000 ,Nil})
	aadd(aLinha,{"C7_TOTAL" ,nX*1000 ,Nil}) 
	
	If nX == 1
		aadd(aLinha,{"C7_VLDESC" ,300 ,Nil})
		aadd(aLinha,{"C7_DESC" ,30 ,Nil}) //Porcentaje
		aadd(aItens,aLinha) 
	Endif
Next nX 

MSExecAuto({|a,b,c,d,e,f,g| MATA120(a,b,c,d)},1,aCabec,aItens,nOpc)  
	
If !lMsErroAuto 
	ConOut("Se incluyó PC: " + cDoc) 
Else
	ConOut("¡Error en la inclusión!")   
	MostraErro()
EndIf

RESET ENVIRONMENT

Return
  
Bloco de código
languagedelphi
themeMidnight
titleInclusión PC con descuento encabezado (C7_DESC1/C7_DESC2/C7_DESC3)
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC120()

Local aCabec 	:= {}
Local aItens 	:= {}
Local aLinha 	:= {}
Local nX 		:= 0
Local cDoc 		:= ""
Local nOpc		:= 3

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" SUCURSAL "01" MÓDULO "COM" 

dbSelectArea("SC7")

//Prueba de inclusión 
If nOpc == 3
	cDoc := GetSXENum("SC7","C7_NUM")		
	SC7->(dbSetOrder(1))		
	While SC7->(dbSeek(xFilial("SC7")+cDoc))			
		ConfirmSX8()			
		cDoc := GetSXENum("SC7","C7_NUM")	
	EndDo
Endif

aadd(aCabec,{"C7_NUM" 		,cDoc})
aadd(aCabec,{"C7_EMISSAO" 	,dDataBase})
aadd(aCabec,{"C7_FORNECE" 	,"COM002"})
aadd(aCabec,{"C7_LOJA" 		,"01"})
aadd(aCabec,{"C7_COND" 		,"000"})
aadd(aCabec,{"C7_CONTATO" 	,"AUTO"})
aadd(aCabec,{"C7_FILENT" 	,cFilAnt})
aadd(aCabec,{"C7_DESC1" 	,10})
aadd(aCabec,{"C7_DESC2" 	,20})
aadd(aCabec,{"C7_DESC3" 	,50})

For nX := 1 To 2 
	aLinha := {}
	

//Prorrateo centro de costo
aAdd(aRatCC, Array(2))
aRatCC[1][1] := "0001"
aRatCC[1][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})
aAdd(aLinha, {"CH_CONTA" , aCCusto[nX][3], Nil})
aAdd(aLinha, {"CH_ITEMCTA" , aCCusto[nX][4], Nil})
aAdd(aLinha, {"CH_CLVL" , aCCusto[nX][5], Nil})

aAdd(aRatCC[1][2], aClone(aLinha))
Next nX

//Prorrateo proyecto
aAdd(aRatPrj, Array(2))
aRatPrj[1][1] := "0001"
aRatPrj[1][2] := {}

For nX := 1 To Len(aItemPrj)
aLinha := {}
aAdd(aLinha, {"AJ7_FILIAL" , xFilial("AJ7") , Nil})
aAdd(aLinha, {"AJ7_PROJET" , aItemPrj[nX][1], Nil})
aAdd(aLinha, {"AJ7_TAREFA" , PadR(aItemPrj[nX][2],TamSX3("AF9_TAREFA")[1]), Nil})
aAdd(aLinha, {"AJ7_NUMPC" , cDoc , Nil})
aAdd(aLinha, {"AJ7_ITEMPC" , "0001" , Nil})
aAdd(aLinha, {"AJ7_COD" , "0001" , Nil})
aAdd(aLinha, {"AJ7_QUANT" , 1 , Nil})
aAdd(aLinha, {"AJ7_REVISA" , "0001" , Nil})
aAdd(aRatPrj[1][2], aClone(aLinha))
Next nX

//Anticipo
aLinha := {}
aAdd(aLinha, {"FIE_FILIAL", xFilial("FIE"),                                                            Nil})
aAdd(aLinha, {"FIE_CART",   "P",                                                                        Nil}) // Cartera pagar
aAdd(aLinha, {"FIE_PEDIDO", "" ,                                                                       Nil}) // No es necesario, porque quien trata es MATA120
aAdd(aLinha, {"FIE_PREFIX", PadR("A", TamSX3("FIE_PREFIX")[1]),                    Nil}) //Prefijo
aAdd(aLinha, {"FIE_NUM",    PadR("PAPC01", TamSX3("FIE_NUM")[1]),            Nil}) //Número de título
aAdd(aLinha, {"FIE_PARCEL", PadR("1", TamSX3("FIE_PARCEL")[1]),                  Nil}) //Cuota
aAdd(aLinha, {"FIE_TIPO",   PadR("PA", TamSX3("FIE_TIPO")[1]),                       Nil}) //Tipo = PA
aAdd(aLinha, {"FIE_FORNEC", PadR("001 ", TamSX3("FIE_FORNEC")[1]),          Nil}) // Proveedor
aAdd(aLinha, {"FIE_LOJA",   PadR("01", TamSX3("FIE_LOJA")[1]),                       Nil}) //Tienda
aAdd(aLinha, {"FIE_VALOR",  100,                                                                     Nil}) // Valor del pa que está vinculado al pedido
aAdd(aAdtPC, aClone(aLinha))  

MSExecAuto({|a,b,c,d,e,f,g,h| MATA120(a,b,c,d,e,f,g,h)},1,aCabec,aItens,nOpc,.F.,aRatCC,aAdtPC,aRatPrj)

If !lMsErroAuto
ConOut("Incluido PC: "+cDoc)
Else
ConOut("Error en la inclusión")
MostraErro()
EndIf

RESET ENVIRONMENT

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MODULO "COM"

dbSelectArea("SC7")

//Prueba de modificación
nOpc := 4
cDoc := "000054" //Informe PC o AE (Modificación / Borrado)

aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_COND" ,"006"}) // Condición de pago que permite anticipo
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

aLinha := {}

// Alterar item existente
aadd(aLinha,{"C7_ITEM" ,"0001" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,"0001",Nil})
aadd(aLinha,{"C7_QUANT" ,10,Nil})
aadd(aLinha,{"C7_PRECO" ,10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,100 ,Nil})
aAdd(aLinha,{"LINPOS","C7_ITEM" ,"0001"})
aAdd(aLinha,{"AUTDELETA","N" ,Nil})
aadd(aItens,aLinha)

aLinha := {}
// Incluir nuevo ítem en el pedido
aadd(aLinha,{"C7_ITEM" ,"0002" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,"0002",Nil})
aadd(aLinha,{"C7_QUANT" ,20,Nil})
aadd(aLinha,{"C7_PRECO" ,10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,200 ,Nil}) 

aadd(aItens,aLinha)

//modificado Prorrateo centro de costo del ítem existente
aAdd(aRatCC, Array(2))
aRatCC[1][1] := "0001"
aRatCC[1][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})

aAdd(aRatCC[1][2], aClone(aLinha))
Next nX

//Prorrateo centro de costo nuevo ítem
aAdd(aRatCC, Array(2))
aRatCC[2][1] := "0002"
aRatCC[2][2] := {}

For nX := 1 To Len(aCCusto)
aLinha := {}
aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil})
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil})
aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})

aAdd(aRatCC[2][2], aClone(aLinha))
Next nX
// pa ya existente en el financiero.
aLinha := {}
aAdd(aLinha, {"FIE_FILIAL", xFilial("FIE"),                                 Nil})
aAdd(aLinha, {"FIE_CART",   "P",                                            Nil}) // Cartera pagar
aAdd(aLinha, {"FIE_PEDIDO", cDoc,                                           Nil}) // Número pedido de compras
aAdd(aLinha, {"FIE_PREFIX", PadR("A", TamSX3("FIE_PREFIX")[1]),             Nil}) //Prefijo
aAdd(aLinha, {"FIE_NUM",    PadR("PAPC01", TamSX3("FIE_NUM")[1]),           Nil}) //Número título
aAdd(aLinha, {"FIE_PARCEL", PadR("1", TamSX3("FIE_PARCEL")[1]),             Nil}) //Cuota
aAdd(aLinha, {"FIE_TIPO",   PadR("PA", TamSX3("FIE_TIPO")[1]),              Nil}) //Tipo = PA
aAdd(aLinha, {"FIE_FORNEC", PadR("001", TamSX3("FIE_FORNEC")[1]),        Nil}) // Proveedor
aAdd(aLinha, {"FIE_LOJA",   PadR("01", TamSX3("FIE_LOJA")[1]),              Nil}) //Tienda
aAdd(aLinha, {"FIE_VALOR",  300,                                            Nil}) // Valor del pa que está vinculado al pedido
aAdd(aAdtPC, aClone(aLinha))  

MSExecAuto({|a,b,c,d,e,f,g,h| MATA120(a,b,c,d,e,f,g,h)},1,aCabec,aItens,nOpc,.F.,aRatCC,aAdtPC)
If !lMsErroAuto
ConOut("Modificado PC: "+cDoc)
Else
ConOut("Error en la modificacion")
MostraErro()
EndIf

...

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MODULO "COM"

dbSelectArea("SC7")

//Prueba de borrado
nOpc := 5
cDoc := "000054" //Informe PC o AE (Modificación / Borrado)

aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_COND" ,"001"})
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

For nX := 1 To 2
aLinha := {}

aadd(aLinha,{"C7_ITEM" ,StrZero(nX,

...

TamSX3("C7_ITEM")[1]),Nil})

...


	aadd(aLinha,{"C7_PRODUTO"

...

 ,"01",Nil})

...


	aadd(aLinha,{"C7_QUANT" ,1 ,Nil})

...


	aadd(aLinha,{"C7_PRECO" ,

...

nX*1000 ,Nil})

...


	aadd(aLinha,{"C7_TOTAL" ,

...

nX*1000 ,Nil})

...

 
Next nX 

MSExecAuto({|a,b,c,d,e,f,g| MATA120(a,b,c,d

...

)},1,aCabec,aItens,nOpc

...

)  
	
If !lMsErroAuto 
	ConOut("

...

Se incluyó PC: " + cDoc)

...

 
Else

...


	ConOut("

...

¡Error en la inclusión!")   
	MostraErro()

...


EndIf

...



RESET ENVIRONMENT

...



Return