Histórico da Página
...
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 ])
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Retorno | L (Logico) = .T. (Apresentou erro) / .F. (OK) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Observações: | 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. 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. PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" USER "usuário" PASSWORD "****" MODULO "COM" |
...
aadd(aCabec,{"C7_NUM" ,cDoc})
aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
aadd(aCabec,{"C7_FORNECE" ,"001 "})
aadd(aCabec,{"C7_LOJA" ,"01"})
aadd(aCabec,{"C7_COND" ,"001006"}) // Condição de pagamento que permite adiantamento
aadd(aCabec,{"C7_CONTATO" ,"AUTO"})
aadd(aCabec,{"C7_FILENT" ,cFilAnt})For nX := 1 To 2
aLinha := {}
If nX == 1 // Alteração do 0001Alterar item existente
aadd(aLinha,{"C7_ITEM" ,"0001" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4)"0001",Nil})
aadd(aLinha,{"C7_QUANT" ,1 10,Nil})
aadd(aLinha,{"C7_PRECO" ,150 10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,150 100 ,Nil})
aAdd(aLinha,{"LINPOS","C7_ITEM" ,"0001"})
aAdd(aLinha,{"AUTDELETA","N" ,Nil})
Else //Adicionando um novo item no PC/AE
aadd(aLinha,aItens,aLinha)
aLinha := {}
// Incluir novo item no pedido
aadd(aLinha,{"C7_ITEM" ,"0002" ,Nil})
aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),"0002",Nil})
aadd(aLinha,{"C7_QUANT" ,1 20,Nil})
aadd(aLinha,{"C7_PRECO" ,200 10 ,Nil})
aadd(aLinha,{"C7_TOTAL" ,200 ,Nil})
Endif
aadd(aItens,aLinha)Next nX
//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,hMSExecAuto({|a,b,c,d,e| 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
PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM"
...