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

DescripciónDescriçãoEsta rutina

Essa rotina permite

el

o registro de

cualquier

qualquer Pedido de

compras de mercaderías en la empresa. El registro del Pedido de compras es el

Compras de mercadorias na empresa. O cadastro do Pedido de Compras é o contrato formal entre

la empresa y el proveedor

empresa e o fornecedor

Programa fuenteFonte

MATA120.PRX

SintaxisSintaxe:

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

 


Nombre

Nome

Tipo

Descripción

Descrição

Estándar

Default

Obligatorio
Obrigatório
Referencia
Referência

ExpN1

Numérico

Pedido de

compras o Autorización de entrega

Compras ou Autorização de Entrega




ExpA1 Array
Encabezado del
Cabeçalho do PC
o
ou AE


ExpA2Array
Ítems del
Itens do PC
o
ou AE


ExpN2Numérico
Opción de la rutina
Opção da rotina automática

3 -

Inclusión

Inclusão

4 -

Modificación

Alteração

5 -

Borrado

Exclusão

ExpL1Lógico
Muestra
Apresenta Dialog (
Pantalla) de la rutina
Tela) da rotina automática


ExpA3Array
Prorrateo
Rateio de Centro de
costo
Custo


ExpA4Array
Anticipo
Adiantamento


ExpA5Array
Prorrateo
Rateio de
proyecto
Projeto


DevuelveRetorno

L (LógicoLogico) = .T. (Presentó errorApresentou erro) / .F. (OK)

ObservacionesObservaçõesLos

Informações
titleCampos cabeçalho

Os campos de

encabezado del

cabeçalho do Pedido de

compras

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

deben informarse obligatoriamente en esta rutina.Los campos de ítems del Pedido de compras

deverão ser obrigatoriamente informados nesta rotina.

Informações
titleCampos obrigatórios - Itens

Os campos de itens do Pedido de Compras (C7_PRODUTO / C7_QUANT / C7_PRECO)

deben informarse obligatoriamente en esta rutina.Si se informa el

deverão ser obrigatoriamente informados nesta rotina.

Informações
titleMoeda

Se informar o campo (C7_MOEDA),

el

o campo (C7_TXMOEDA)

también debe informarse en los ítems del pedido.Si modificara o borrara un

também devera ser informado nos itens do pedido.

Informações
titleAlterar ou Excluir pedido

Se for alterar ou excluir um pedido de compra,

el

o campo (C7_REC_WT)

tiene

tem que estar

completado con el número del

preenchido com o numero do registro (SC7->(Recno())

 

Modificación del


Alteração de Pedido de

compras

Compras:

Para

modificar/borrar ítems existentes en el

alterar/excluir item já existente no Pedido de

compras, debe utilizarse el LINPOS y

Compras, deve-se utilizar o LINPOS e AUTODELETA

Para incluir

un nuevo ítem en un pedido existente, debe informarse el

um novo item em um pedido já existente, deve-se informar o campo (C7_ITEM)

con un

com um registro

nuevo

novo,

y NO

e NÃO utilizar

el

o LINPOS

ni

e AUTODELETA.

 

Atender Solicitudes de compra:
Informações
titleVinculo para atender solicitação de compras

Para que

se atienda la SC, deben informarse los siguientes campos en los ítems del

seja atendida a SC, deve-se informar os seguintes campos nos itens do PC.

C7_NUMSC (Numero

de la solicitud

da solicitação) = Informar

el número de la solicitud

o numero da solicitação de Compras que

originó el

originou o Pedido de

compras

Compras

C7_ITEMSC (

Ítem de la solicitud

Item da solicitação) = Informar

el ítem de la solicitud

o item da solicitação de compras que

está

esta vinculada

al

ao Pedido de

compras

Compras

C7_QTDSOL (

Cantidad

Quantidade pedido

de la

da SC) = Informar

la cantidad de la solicitud

a quantidade da solicitação de compras vinculada

al

ao Pedido de

compras

Compras

Informações
 
title
Prorrateo por
Rateio - Centro de
costo:
Custo
El

O array de centro de

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

 

Prorrateo de 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.

 

Anticipo:

El array de anticipo debe transferirse con todos los campos y siguiendo el misma orden del siguiente ejemplo.
PREPARE ENVIRONMENTEn la preparación del entorno debe utilizarse el usuario y contraseña, porque el sistema utiliza el usuario del

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

Informações
titleRateio - 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.

Informações
titleAdiantamento

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

Informações
titleInicializando Ambiente

PREPARE ENVIRONMENT

Na preparação do ambiente deve ser utilizado o usuário e senha, pois o sistema utiliza o usuário do sistema(RetCodUsr()) para realizar

la grabación del

a gravação do campo C7_USER.   

Ejemplo

Exemplo

PREPARE ENVIRONMENT EMPRESA "01"

SUCURSAL

FILIAL "1001" USER "

usuario

usuário" PASSWORD "****"

MÓDULO "COM"

MODULO "COM"

Informações
titleValor Frete

As informações do frete devem ser enviadas no cabeçalho do pedido de compras.

C7_TPFRETE (Tipo Frete)

C7_FRETE (Valor Frete)


Observação: O valor informado no campo C7_FRETE (Valor Frete) corresponde ao 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 campo C7_VALFRE (Valor Frete)

Ex:

C7_FRETE = 10 e PC tem 1 Item

C7_VALFRE (Valor Frete) = 10


C7_FRETE = 20 e PC tem 4 Itens

C7_VALFRE (Valor Frete) = 5 (Em cada item, totalizando os 20 informados no C7_FRETE)

Exemplos:

Bloco de código
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_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

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

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
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| MATA120(a,b,c,d,e)},1,aCabec,aItens,nOpc,.F.)

If !lMsErroAuto
ConOut("Exclusao PC: "+cDoc)
Else
ConOut("Erro na exclusão!")
MostraErro()
EndIf

RESET ENVIRONMENT

Return


Ejemplos:

#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

...