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

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




RetornoDevuelve

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

ExemplosEjemplos:

Bloco de código
languagedelphi
themeMidnight
titleInclusão Inclusión PC - Rateio Prorrateo de CC / Projeto Proyecto / AdiantamentoAnticipo
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"}} //ProjetoProyecto, TarefaTarea
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //PorcentagemPorcentaje,Centro de Custocosto, ContaCuenta Contabilcontable, ItemÍtem ContaCuenta, CLVL
Local nX := 0
Local cDoc := ""
Local nOpc := 3

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" FILIALSUCURSAL "1001" MODULOMÓDULO "COM"

dbSelectArea("SC7")

//TestePrueba de Inclusãoinclusió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

//RateioProrrateo Centro de Custocosto
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

//RateioProrrateo ProjetoProyecto
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

//AdiantamentoAnticipo
aLinha := {}
aAdd(aLinha, {"FIE_FILIAL", xFilial("FIE"),                                                            Nil})
aAdd(aLinha, {"FIE_FILIALCART",   xFilial("FIEP"),                                                               Nil})
aAdd(aLinha, {"FIE_CART",   "P",                                                                        Nil}) // Cartera Carteirapor pagar
aAdd(aLinha, {"FIE_PEDIDO", "" ,                                                                                                                                            Nil}) // NãoNo precisanecesita, poispues quemquién trata ées a MATA120
aAdd(aLinha, {"FIE_PREFIX", PadR("A", TamSX3("FIE_PREFIX")[1]),                                       Nil}) //PrefixoPrefijo
aAdd(aLinha, {"FIE_NUM",      PadRPadR("PAPC01", TamSX3("FIE_NUM")[1]),                       Nil}) //NumeroNúmero Titulotítulo
aAdd(aLinha, {"FIE_PARCEL", PadR("1", TamSX3("FIE_PARCEL")[1]),                                   Nil}) //ParcelaCuota
aAdd(aLinha, {"FIE_TIPO",    PadR("PA", TamSX3("FIE_TIPO")[1]),                       Nil                       Nil}) //Tipo = PA
aAdd(aLinha, {"FIE_FORNEC", PadR("001 ", TamSX3("FIE_FORNEC")[1]),               Nil}) // FornecedorProveedor
aAdd(aLinha, {"FIE_LOJA",    PadR("01", TamSX3("FIE_LOJA")[1]),                       Nil]),                       Nil}) //LojaTienda
aAdd(aLinha, {"FIE_VALOR",  100,                                                                     Nil 100,                                                                     Nil}) // Valor dodel pa que está vinculado aoal 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¡Error en nala inclusaoinclusión!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return
Bloco de código
languagedelphi
themeMidnight
titleAlteração Modificación PC - Rateio Prorrateo de CC / Projeto Proyecto / AdiantamentoAnticipo
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"}} //ProjetoProyecto, TarefaTarea
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //PorcentagemPorcentaje,Centro de Custocosto, ContaCuenta Contabilcontable, ItemÍtem ContaCuenta, CLVL
Local nX := 0
Local cDoc := ""
Local nOpc := 4

PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "01" FILIALSUCURSAL "1001" MODULOMÓDULO "COM"

dbSelectArea("SC7")

//TestePrueba de alteraçãomodificación
cDoc := "000054" //Informar PC ouo AE (AlteraçãoModificación / ExclusãoBorrado)

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çãoCondición de pagamentopago que permite adiantamentoanticipo
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})

aLinha := {}

// AlterarModificar itemí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 novonuevo ítem itemen noel 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)

//alteradomodificado RateioProrrateo Centro de Custocosto dodel itemí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

//RateioProrrateo Centro de Custocosto novonuevo itemí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 existenteen noel financeirofinanciero.
aLinha := {}
aAdd(aLinha, {"FIE_FILIAL", xFilial("FIE"),                                                                Nil})
aAdd(aLinha, {"FIE_CART",    "P",                                            Nil                                            Nil}) // CarteiraCartera por pagar
aAdd(aLinha, {"FIE_PEDIDO", cDoc,                                          PEDIDO", cDoc,                                           Nil}) // NumeroNúmero pedido de compras
aAdd(aLinha, {"FIE_PREFIX", PadR("A", TamSX3("FIE_PREFIX")[1]),                        Nil}) //PrefixoPrefijo
aAdd(aLinha, {"FIE_NUM",      PadRPadR("PAPC01", TamSX3("FIE_NUM")[1]),                Nil}) //NumeroNúmero Titulotítulo
aAdd(aLinha, {"FIE_PARCEL", PadR("1", TamSX3("FIE_PARCEL")[1]),                         Nil}) //ParcelaCuota
aAdd(aLinha, {"FIE_TIPO",    PadR("PA", TamSX3("FIE_TIPO")[1]),              Nil              Nil}) //Tipo = PA
aAdd(aLinha, {"FIE_FORNEC", PadR("001", TamSX3("FIE_FORNEC")[1]),            NilNil}) // FornecedorProveedor
aAdd(aLinha, {"FIE_LOJA",    PadR("01", TamSX3("FIE_LOJA")[1]),              Nil             Nil}) //LojaTienda
aAdd(aLinha, {"FIE_VALOR",  300,                                            Nil",  300,                                            Nil}) // Valor dodel pa que está vinculado aoal 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¡Error en nala alteracaomodificación!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return
Bloco de código
languagedelphi
themeMidnight
titleExclusão Borrado 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"}} //ProjetoProyecto, TarefaTarea
Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //PorcentagemPorcentaje, Centro de Custocosto, ContaCuenta Contábilcontable, ItemÍtem ContaCuenta, CLVL
Local nX := 0
Local nOpc := 5
Local cDoc := "000054" 

PREPARE ENVIRONMENT EMPRESA "01" FILIALSUCURSAL "1001" MODULOMÓ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("ExclusaoBorrado PC: "+cDoc)
Else
ConOut("Erro¡Error en nael exclusãoborrado!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return

...