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

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


NomeDescriçãoDefaultObrigatórioReferência Compras ou Autorização de EntregaCabeçalho do ou Itens do ou Opção da rotina Inclusão Alteração ExclusãoApresenta Tela) da rotina Rateio CustoAdiantamentoRateio Projeto

Nombre

Tipo

Descripción

Estándar

Obligatorio

Referencia

ExpN1

Numérico

Pedido de

compras o Autorización de entrega




ExpA1

Array

Encabezado del PC

o AE




ExpA2

Array

Ítems del PC

o AE




ExpN2

Numérico

Opción de la rutina automática



3 -

Inclusión

4 -

Modificación

5 -

Borrado

ExpL1

Lógico

Muestra Dialog (

Pantalla) de la rutina automática




ExpA3

Array

Prorrateo de Centro de

costo




ExpA4

Array

Anticipo




ExpA5

Array

Prorrateo de

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

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] := {}
languagedelphi
themeMidnight
titleInclusão PC - Rateio de CC / Projeto / Adiantamento
collapsetrue


For nX := 1 To 
1
Len(aCCusto)
aLinha := {}
aadd
aAdd(aLinha, {"
C7
CH_
PRODUTO
FILIAL" , xFilial("
0001
SCH"), Nil})
aadd(aLinha,{"C7_QUANT" ,1 ,
aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil})
aadd
aAdd(aLinha, {"
C7
CH_
PRECO
PERC" ,
100
 aCCusto[nX][1], Nil})
aadd
aAdd(aLinha, {"
C7
CH_
TOTAL
CC" ,
100 ,Nil}) aadd(aItens,aLinha) Next nX //Rateio Centro de Custo aAdd(aRatCC, Array(2)) aRatCC[1][1] := "0001" aRatCC[1
 aCCusto[nX][2], Nil})

aAdd(aRatCC[2][2]
:= {} For nX := 1 To Len(aCCusto)
, aClone(aLinha))
Next nX
// pa existente en el financiero.
aLinha := {}
aAdd(aLinha, {"
CH
FIE_FILIAL"
, xFilial("
SCH
FIE"),
Nil}) aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"),
                                 Nil})
aAdd(aLinha, {"
CH
FIE_
PERC
CART", 
, aCCusto[nX][1], Nil}) aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil})
  "P",                                            Nil}) // Cartera por pagar
aAdd(aLinha, {"
CH
FIE_
CONTA
PEDIDO", 
, 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 := {}
cDoc,                                           Nil}) // Número pedido de compras
aAdd(aLinha, {"
AJ7
FIE_
FILIAL
PREFIX", PadR("A", 
xFilial
TamSX3("
AJ7") ,
FIE_PREFIX")[1]),             Nil}) //Prefijo
aAdd(aLinha, {"
AJ7
FIE_
PROJET
NUM", 
, aItemPrj[nX]
   PadR("PAPC01", TamSX3("FIE_NUM")[1]),           Nil}) //Número título
aAdd(aLinha, {"
AJ7
FIE_
TAREFA
PARCEL"
, PadR(
aItemPrj[nX][2],
"1", TamSX3("
AF9
FIE_
TAREFA
PARCEL")[1]), 
Nil}) aAdd(aLinha, {"AJ7_NUMPC" , cDoc , Nil}) aAdd(aLinha, {"AJ7_ITEMPC" , "0001" , Nil})
            Nil}) //Cuota
aAdd(aLinha, {"
AJ7
FIE_
COD
TIPO", 
,
  PadR("
0001
PA"
, 
Nil}) aAdd(aLinha, {"AJ7_QUANT" , 1 , Nil})
TamSX3("FIE_TIPO")[1]),              Nil}) //Tipo = PA
aAdd(aLinha, {"
AJ7
FIE_
REVISA
FORNEC"
, PadR("
0001
001"
, 
Nil}) aAdd(aRatPrj[1][2], aClone(aLinha)) Next nX //Adiantamento aLinha := {}
TamSX3("FIE_FORNEC")[1]),        Nil}) // Proveedor
aAdd(aLinha, {"FIE_
FILIAL
LOJA",   PadR("01", 
xFilial
TamSX3("FIE_LOJA")
,                                                            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))  
[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
,f,g,h
| MATA120(a,b,c,d,e
,f,g,h
)},1,aCabec,aItens,nOpc,.F.
,aRatCC,aAdtPC,aRatPrj
)

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

RESET ENVIRONMENT

Return
Bloco de código
languagedelphi
themeMidnight
titleAlteração PC - Rateio de CC / Projeto / AdiantamentoInclusión PC con descuento ítem (C7_VLDESC)
collapsetrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User FUnctionFunction EXEC121EXEC120()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local aRatCC := {}
Local aRatPrj := {}
Local aAdtPC := {}
Local aItemPrjaCabec 	:= {{"01","02"},{"02","01"}} //Projeto, Tarefa
Local aCCustoaItens 	:= {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentagem,Centro de Custo, Conta Contabil, Item Conta, CLVL}
Local aLinha 	:= {}
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)

		:= ""
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_NUMLOJA" 		,cDoc"01"})
aadd(aCabec,{"C7_EMISSAOCOND" 		,dDataBase"000"})
aadd(aCabec,{"C7_FORNECECONTATO" 	,"001 AUTO"})
aadd(aCabec,{"C7_LOJAFILENT" 	,"01"cFilAnt})
	
For nX := 1 To 2 
	aLinha := {}
	aadd(aCabecaLinha,{"C7_CONDITEM" ,"006"}) // Condição de pagamento que permite adiantamento
aadd(aCabecStrZero(nX,TamSX3("C7_ITEM")[1]),Nil})
	aadd(aLinha,{"C7_CONTATOPRODUTO" ,"AUTO01",Nil})
	aadd(aCabecaLinha,{"C7_FILENTQUANT" ,cFilAnt1 ,Nil})

aLinha := {}

// Alterar item existente
	aadd(aLinha,{"C7_ITEMPRECO" ,"0001"nX*1000 ,Nil})
	aadd(aLinha,{"C7_PRODUTOTOTAL" ,"0001"nX*1000 ,Nil})
) 
	
	If nX == 1
		aadd(aLinha,{"C7_QUANTVLDESC" ,10150 ,Nil}) 
	Endif

	aadd(aItens,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] := {}
) 
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 Len(aCCusto)
To 2 
	aLinha := {}
aAdd	aadd(aLinha, {"CHC7_FILIALITEM" , xFilialStrZero(nX,TamSX3("SCHC7_ITEM")[1]),Nil})
	aadd(aLinha,{"C7_PRODUTO" ,"01",Nil})
aAdd	aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
	aadd(aLinha,{"CHC7_ITEMPRECO" , 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 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 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("AlteradoSe incluyó PC: " + cDoc) 
Else
	ConOut("Erro¡Error en nala alteracaoinclusión!")   
	MostraErro()
EndIf

RESET ENVIRONMENT

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

User FUnctionFunction EXEC121EXEC120()

Local aCabec 	:= {}
Local aItens 	:= {}
Local aLinha 	:= {}
Local aRatCCnX 		:= {}0
Local aRatPrjcDoc 		:= {}""
Local aAdtPC nOpc		:= {}3

LocalPRIVATE aItemPrjlMsErroAuto := {{"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").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" 	,"001 COM002"})
aadd(aCabec,{"C7_LOJA" 		,"01"})
aadd(aCabec,{"C7_COND" 		,"001000"})
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 1
	aLinha := {}

	aadd(aLinha,{"C7_ITEM" ,StrZero(nX,4) TamSX3("C7_ITEM")[1]),Nil})
	aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),"01",Nil})
	aadd(aLinha,{"C7_QUANT" ,1 ,Nil})
	aadd(aLinha,{"C7_PRECO" ,150nX*1000 ,Nil})
	aadd(aLinha,{"C7_TOTAL" ,150nX*1000 ,Nil})
aadd(aItens,aLinha) 
Next nX 

MSExecAuto({|a,b,c,d,e,f,g| MATA120(a,b,c,d,e)},1,aCabec,aItens,nOpc,.F.)  
	
If !lMsErroAuto 
	ConOut("ExclusaoSe incluyó PC: " + cDoc) 
Else
	ConOut("Erro¡Error en nala exclusãoinclusión!")   
	MostraErro()
EndIf

RESET ENVIRONMENT

Return

...