Versões comparadas

Chave

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

PagetitleMATA120 - Pedido de ComprasMATA120 - Pedido de ComprasFunçãoFunción: MATA120 - Pedido de Comprascompras

VersõesVersiones:

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

Compatível PaísesCompatible países:

Todos

Sistemas Operacionaisoperativos:

Todos

Compatível às Compatible a las bases de dadosdatos:

Todos

Nivel de Acessoacceso:

Nivel 1 (

Acesso

Acceso Clientes)

Idiomas:

Todos

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 encabezado

Los campos de encabezado del Pedido de compras

Os campos de cabeçalho do Pedido de Compras

(C7_EMISSAO / C7_FORNECE / C7_LOJA / C7_COND / C7_CONTATO / C7_FILENT)

deverão ser obrigatoriamente informados nesta rotina.Os campos de itens do Pedido de Compras

deben informarse obligatoriamente en esta rutina.

Informações
titleCampos obligatorios - Ítems

Los campos de ítems del Pedido de compras (C7_PRODUTO / C7_QUANT / C7_PRECO

) deverão ser obrigatoriamente informados nesta rotina.Se informar o

/ C7_TOTAL) ), deben informarse obligatoriamente en esta rutina.

Informações
titleMoneda

Si se informa el campo (C7_MOEDA),

o

el campo (C7_TXMOEDA)

também devera ser informado nos itens do pedido.Se for alterar ou excluir um

también debe informarse en los ítems del pedido.

Informações
titleModificar o Borrar pedido

Si modificara o borrara un 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.

Atender Solicitações de Compras:

Para que seja atendida a SC, deve-se informar os seguintes campos nos itens do
Informações
titleVínculo para atender solicitud de compras

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
titleProrrateo -
Rateio por
Centro de
Custo:
costo
O

El array de centro de

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

Rateio de Projeto: (Opção disponível a partir da versão 11)

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

Adiantamento:

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

Exemplos:

#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_FILENT" ,cFilAnt})

For nX := 1 To 1
aLinha := {}
aadd(aLinha,{"C7_PRODUTO" ,"0001",Nil})
aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
aadd(aLinha,{"C7_PRECO" ,100 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,100 ,Nil})
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)
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

//Rateio Projeto
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

//Adiantamento
aLinha := {}
aAdd(aLinha, {"FIE_FILIAL", xFilial("FIE"),                                                            Nil})
aAdd(aLinha, {"FIE_CART",   "P",                                                                        Nil}) // Carteira pagar
aAdd(aLinha, {"FIE_PEDIDO", "" ,                                                                       Nil}) // Não precisa, pois quem trata é a MATA120
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",  100,                                                                     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

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

dbSelectArea("SC7")

//Teste de alteração
nOpc := 4
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" ,"001"})
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

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

If nX == 1 //Alteração do 0001
aadd(aLinha,{"C7_ITEM" ,"0001" ,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(aLinha,{"LINPOS","C7_ITEM" ,"0001"})
aAdd(aLinha,{"AUTDELETA","N" ,Nil})
Else //Adicionando um novo item no PC/AE
aadd(aLinha,{"C7_ITEM" ,"0002" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),Nil})
aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
aadd(aLinha,{"C7_PRECO" ,200 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,200 ,Nil})
Endif
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("Alterado PC: "+cDoc)
Else
ConOut("Erro na alteracao!")
MostraErro()
EndIf

RESET ENVIRONMENT

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

dbSelectArea("SC7")

//Teste de exclusão
nOpc := 5
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" ,"001"})
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

For nX := 1 To 2
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

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

Informações
titleProrrateo - Proyecto

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

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

Informações
titleAnticipo

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

Informações
titleInicializando entorno

PREPARE ENVIRONMENT

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

PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" USER "usuario" PASSWORD "****" MÓDULO "COM"

Informações
titleValor flete

Las informaciones del frete deben enviarse en el encabezado del pedido de compras.

C7_TPFRETE (Tipo flete)

C7_FRETE (Valor flete)

 

Observación: El valor informado en el campo C7_FRETE (Valor flete) corresponde al valor TOTAL 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 flete)

Ej.:

C7_FRETE = 10 y PC tiene 1 Ítem

C7_VALFRE (Valor flete) = 10

 

C7_FRETE = 20 y PC tiene 4 Ítems

C7_VALFRE (Valor flete) = 5 (En cada ítem, totalizando los 20 informados 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

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})
aadd(aCabec,{"C7_TPFRETE" ,"C"})
aadd(aCabec,{"C7_FRETE" ,15})

For nX := 1 To 1
aLinha := {}
aadd(aLinha,{"C7_PRODUTO" ,"0001",Nil})
aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
aadd(aLinha,{"C7_PRECO" ,100 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,100 ,Nil})
aadd(aItens,aLinha)
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_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 por pagar
aAdd(aLinha, {"FIE_PEDIDO", "" ,                                                                       Nil}) // No necesita, pues quién 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 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

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))  

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("¡Error en la modificación!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return
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 := 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 := {}
	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