Árvore de páginas

Versões comparadas

Chave

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

...

Pagetitle
MATA120 - Pedido de Compras
MATA120 - Pedido de Compras

Função: MATA120 - Pedido de Compras

Versões:

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

Compatível Países:

Todos

Sistemas Operacionais:

Todos

Compatível às

...

bases de

...

dados:

Todos

...

Nivel de Acesso:

...

Nivel 1 (Acesso Clientes)

Idiomas:

...

Todos





Descrição: 

Essa

...

rotina

...

permite

...

o

...

registro

...

de

...

qualquer

...

Pedido

...

de

...

Compras de

...

mercadorias

...

na

...

empresa.

...

O

...

cadastro

...

do

...

Pedido

...

de

...

Compras

...

é

...

o

...

contrato

...

formal

...

entre

...

empresa

...

e

...

o

...

fornecedor

...

Programa Fonte: 

...

MATA120.

...

PRX

Sintaxe:

MATA120 - Pedido de Compras ( [ ExpN1 ] [ ExpA1 ] [ ExpA2 ] [ ExpN2 ] [ ExpL1 ] [

...

ExpA3] [

...

ExpA4 ] [

...

ExpA5 ])


Nome

Tipo

Descrição

Default

ObrigatórioReferência

ExpN1

Numérico

Pedido de Compras ou Autorização de Entrega




ExpA1 ArrayCabeçalho do PC ou AE


ExpA2ArrayItens do PC ou AE


ExpN2NuméricoOpção da rotina automática

3 - Inclusão

4 - Alteração

5 - Exclusão

ExpL1LógicoApresenta Dialog (Tela) da rotina automática


ExpA3ArrayRateio de Centro de Custo


ExpA4ArrayAdiantamento


ExpA5ArrayRateio de Projeto


Retorno

L (Logico) = .T. (Apresentou erro) / .F. (OK)

Observações: 

Retorno:

...

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

...

(C7_PRODUTO

...

/ C7_QUANT

...

/ C7_PRECO) deverão ser obrigatoriamente informados nesta rotina.

...

Se informar o campo

...

(C7_MOEDA

...

), o campo

...

(C7_TXMOEDA

...

) também

...

devera ser informado nos itens do pedido.

Se for

...

alterar ou excluir um pedido de compra, o campo (C7_REC_WT) tem que estar preenchido com o

...

numero do registro (SC7->(Recno())

...


Alteração de Pedido de Compras:

Para alterar/excluir item já existente no Pedido de Compras, deve-se utilizar o LINPOS e AUTODELETA

Para incluir um novo item em um pedido já existente, deve-se informar o campo (C7_ITEM) com um registro novo, e NÃO utilizar o LINPOS e AUTODELETA.


Atender Solicitações de Compras:

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

C7_NUMSC (Numero da solicitação) = Informar o

...

numero da

...

solicitação de

...

Compras que originou o Pedido de

...

Compras

C7_ITEMSC

...

(Item

...

da

...

solicitação)

...

=

...

Informar

...

o

...

item

...

da

...

solicitação de compras que esta vinculada ao Pedido de Compras

C7_QTDSOL (Quantidade

...

pedido da SC) =

...

Informar a quantidade da

...

solicitação de

...

 

compras vinculada ao Pedido de

...

Compras


Rateio por Centro de Custo:

O 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.

...



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 a gravação do campo C7_USER.   
Exemplo: 

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" USER "usuário" PASSWORD "****" MODULO "COM"


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" ,"

...

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("Incluido com sucesso! "+cDoc)
Else
ConOut("Erro na inclusao!")
MostraErro()
EndIf
Next nY
ConOut("Fim : "+Time())

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Alteracao |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aCabec := {}
aItens := {}
aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"F00001"})
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,Len(SC7->C7_ITEM)),Nil})
aadd(aLinha,{"C7_PRODUTO","PA001",Nil})
aadd(aLinha,{"C7_QUANT",2,Nil})
aadd(aLinha,{"C7_PRECO",200,Nil})
aadd(aLinha,{"C7_TOTAL",400,Nil})

aadd(aLinha,{"C7_REC_WT" ,SC7->(RECNO()) ,Nil})

...

)
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

...

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 exclusao!")

...

MostraErro()
EndIf

RESET ENVIRONMENT

Return

...

Parâmetros:

...