Você está na página 1de 5

Modulo : Programa : SIGAAUT | Quark 1.

00B | Descrio: ROTINAS AUTOMATICAS | ------------------- | +---------------------------------------------------------+------------+----------+-------------+ | MICROSIGA SOFTWARE | | Microsiga Software S/A | 13/03/2002 | 14:54:18 | pAgina 0001 | +=====================+============================================================+============+==========+=============+ 1) Objetivo : Fazer manuteno,ao automtica (incluso, alterao e excluso) automatizando o processo de entrada de dados sem a necessidade de desenvolver rotinas especificas. 2) Aplicao: Esta tcnica esta aplicada em todas as verses Protheus, porem esta documentao se baseou na verso 6.09. 3) Vantagens: 1) Interface : A entrada de dados e enviada a rotina em forma de campos e contedos (array) e desta forma no sendo necessrio a apresentao de nenhuma interface ao usurio. 2) Segurana : Em relao a este aspecto e fundamental sua utilizao desta forma, pois esta se usando a rotina padro no sistema, onde se a rotina sofrer manuteno a atualizao ser automtica para o usurio final. 3) Agilidade no processo : Aumenta consideravelmente a agilidade, pois neste processo se bem construdo elimina-se a entrada de dados via teclado (digitao). 4) Procedimento: Existe duas maneiras de esta utilizando a rotina automtica. 1 Por um job 2 Direto do sistema A principal diferena entre elas e que quando usamos por um Job , devemos utilizar diretamente os nomes da funes 1)Procedimento utilizando em JOB ---------------------------------Para a utilizao da rotina automtica em JOB nao utilizar a funo MSExecAuto mas sim direto o nome da funo. Exemplo: Mata010(aProduto,nOpc) // utilizando em JOB

Ja para rotinas que no so em Job , devemos usar a MSExecAuto, pois a mesma tem a funo de guardar o ambiente , executar a funo automtica e retornar de onde parou. 2)Procedimentos utilizando MSExecAuto ------------------------------------Exemplo: MSExecAuto({|x,y| mata010(x,y)},aProduto,3) Modelos de Rotinas Automticas:

// utilizando em aplicao normal.

------------------------------Existem 2 modelos de rotinas automticas: 1Modelo -------Rotinas que utilizam somente a Enchoice (Baseada no dicionrio de dados para uma tabela). CONA060(aRotAuto)-- Cadastro de Centro de Custo Custo FINA040(aRotAuto,nOpc)--Cadastro Titulo a Receber FINA050(aRotAuto,nOpcion,nOpc)*--Cadastro Titulo A pagar MATA010(aRotAuto,nOpc)--Cadastro de produtos MATA020(aRotAuto,nOpc)--Cadastro de Fornecedor MATA030(aRotAuto,nOpc)--Cadastro de Clientes MATA040(aRotAuto,nOpc)--Cadastro de Vendedor MATA050(aRotAuto,nOpc)--Cadastro de Transportadora MATA060(aRotAuto,nOpc)--Atualizao da Amarrao Produto Fornecedor MATA080(aRotAuto,nOpc)--Cadastro de Tipo entrada e sada MATA180(aRotAuto,nOpc)--Atualizao dos dados complementares do produto MATA240(aRotAuto,nOpc)--Movimentaes Internas (Requisies/Devolues) MATA250(aRotAuto)--Programa para digitao das produes. MATA270(aRotAuto)--Programa de digitao do inventario MATA650(aRotAuto,nOpc)--Cadastramento de Ordens de Produo MATA680(aRotAuto)--Programa de atualizao do movimento de produo MATA681(aRotAuto)-Apontamento de Produo baseado no Roteiro de de Operaes MATA682(aRotAuto)--Apontamento de Horas Improdutivas QADA020(aRotAuto,nOpc)--Cadastro de Check List QIEA030(aRotAuto)--Programa de atualizao de Unidades de Medida Obs.: As funes que no tem o parmetro 'nOpc' esto disponveis somente a rotina de incluso. *nOpcion= utilizado para localizao, para os processos automticos passar NIL. Parmetros: ----------NOpc - numrico com tipo da operao 3-incluso, 4-alterao e 5 excluso ARotAuto - array contendo os campos e contedos, no mnimo passar os campos obrigatrios. NIL - parmetro reservado Exemplo: User Function IncProd() Local aRotAuto := {} Local nOpc := 3 // incluso Private lMsHelpAuto := .t. // se .t. direciona as mensagens de help para o arq. de log Private lMsErroAuto := .f. //necessrio a criao, pois ser //atualizado quando houver //alguma inconsistncia nos parmetros Begin Transaction aRotAuto:= {{"B1_COD","1010" ,Nil},; {"B1_DESC" ,"Produto teste",Nil},; {"B1_TIPO" ,"PA" ,Nil},;

{"B1_UM" {"B1_LOCPAD" {"B1_PICM" {"B1_IPI" {"B1_PRV1" {"B1_LOCALIZ" {"B1_CODBAR"

,"UN" ,"01" ,0 ,0 ,100 ,"N" ,'789888800001'

,Nil},; ,Nil},; ,Nil},; ,Nil},; ,Nil},; ,Nil},; ,Nil}}

MSExecAuto({|x,y| mata010(x,y)},aProduto,nOpc) If lMsErroAuto DisarmTransaction() break EndIf End Transaction If lMsErroAuto /* Se estiver em uma aplicao normal e ocorrer alguma inconsistncia nos parmetros passados,mostrar na tela o log informando qual coluna teve a inconsistncia. */ Mostraerro() Return .f. EndIf Return .t. 2MODELO -------Rotinas que utilizam enchoice e getdados. Rotinas disponveis: CONA050(lLanc,xAutoCab,xAutoItens)*- Lanamentos Contbeis MATA100(xAutoCab,xAutoItens,nOpc103)-Entrada de Notas Fiscais de Compra MATA102(xAutoCab,xAutoItens,nOpc)-Remito de Entrada de Materiais (Compras) MATA103(xAutoCab,xAutoItens,nOpc,lWhenGet)**- Notas Fiscais de Entrada MATA110(xAutoCab,xAutoItens, nOpc)-Solicitao de Compra MATA120(nFuncao,xAutoCab,xAutoItens,nOpcAuto)***-Pedidos de Compra MATA140(xAutoCab,xAutoItens,nOpc)-Digitao das Notas Fiscais de Entrada sem os dados Fiscais MATA150(xAutoCab,xAutoItens,nOpc)-Rotina de atualizao manual das cotaes de compra MATA241(xAutoCab,xAutoItens)-Programa de Movimentaes Internas (Requisies/Devolues) MATA265(xAutoCab,xAutoItens,nOpc)-Distribuio de Produtos. MATA410(xAutoCab,xAutoItens,nOpc)-Programa de atualizao de Pedidos de Venda MATA415(xAutoCab,xAutoItens,nOpc)-Rotina de atualizao dos Oramentos de venda MATA920(xAutoCab,xAutoItens,nOpc)-SAIDA de Notas Fiscais de Venda Manual TMKA061(xAutoCab,xAutoItens,nOpc)-Gerador de Listas CFGX016(xAutoCab,xAutoItens)-Manuteno do arquivo de tabelas do sistema FINA070(xAutoCab,nOpc)-Programa de Baixa de Ttulos a Receber FINA080(xAutoCab,nOpc)-Programa de Baixa de Ttulos a Pagar MATA266(aAutoItens)-Programa de Transferncia de Material para Expedio

Obs.: As funes que no tem o parmetro 'nOpc' esto disponveis somente a rotina de incluso. * lLanc -Utilizado para ..., nos processos automticos passar falso(.f.). ** lWhenGet - Nas rotinas automticas passar NIL ***nOpcAuto-Passar o tipo que usa o modulo mata120 (1 pra pedido de compra, 2 Atualizao de Entrega) Parmetros: nOpc - numrico com tipo da operao 3-incluso, 4-alterao e 5 excluso xAutoCab - array contendo os campos e contedos do cabealho, no mnimo passar os campos obrigatrios. xAutoItens - array contendo outro array com os campos e contedo referente aos itens. NIL - parmetro reservado Exemplo: User Function IncPed() Local aCabPV := {} Local aItemPV1:= {} Local aItemPV2:= {} Local nOpc := 3 // inclusao Private lMsHelpAuto := .t. Private lMsErroAuto := .f. Begin Transaction //Cabealho aCabPV:={{"C5_NUM" ,"000108" ,Nil},; // Numero do pedido {"C5_CLIENTE","000001" ,Nil},; // Cdigo do cliente {"C5_LOJAENT","00" ,Nil},; // Loja para entrada {"C5_LOJACLI","00" ,Nil},; // Loja do cliente {"C5_EMISSAO",dDatabase ,Nil},; // Data de emisso {"C5_TIPO" ,"N" ,Nil},; // Tipo de pedido {"C5_CONDPAG","001" ,Nil},; // Cdigo da condio de pagamento* {"C5_LIBEROK","S" ,Nil}} // Liberao Total //Itens aItemPV1:={ {"C6_NUM","000108",Nil},; // Numero do Pedido {"C6_ITEM" ,"01" ,Nil},; // Numero do Item no Pedido {"C6_PRODUTO","1010" ,Nil},; // Cdigo do Produto {"C6_QTDVEN" ,1 ,Nil},; // Quantidade Vendida {"C6_PRCVEN" ,100 ,Nil},; // Preo Unitrio Liquido {"C6_VALOR" ,100 ,Nil},; // Valor Total do Item {"C6_ENTREG",dDataBase,Nil},; // Data da Entrega {"C6_UM" ,"UN" ,Nil},; // Unidade de Medida Primar. {"C6_TES" ,"510" ,Nil},; // Tipo de Entrada/Sada do Item {"C6_LOCAL" ,"01" ,Nil},; // Almoxarifado {"C6_DESCONT",1 ,Nil},; // Percentual de Desconto {"C6_COMIS1" ,0 ,Nil},; // Comisso Vendedor {"C6_CLI" ,"000001",Nil},; // Cliente {"C6_LOJA" ,"00" ,Nil},; // Loja do Cliente {"C6_QTDEMP" ,1 ,Nil},; // Quantidade Empenhada {"C6_QTDLIB" ,1 ,Nil}} // Quantidade Liberada Itens

aItemPV2:={ {"C6_NUM" ,"000108",Nil},; {"C6_ITEM" ,"01" ,Nil},; {"C6_PRODUTO","1010" ,Nil},; {"C6_QTDVEN" ,1 ,Nil},; {"C6_PRCVEN" ,100 ,Nil},; {"C6_VALOR" ,100 ,Nil},; {"C6_ENTREG",dDataBase,Nil},; {"C6_UM" ,"UN" ,Nil},; {"C6_TES" ,"510" ,Nil},; {"C6_LOCAL" ,"01" ,Nil},; {"C6_DESCONT",1 ,Nil},; {"C6_COMIS1" ,0 ,Nil},; {"C6_CLI" ,"000001",Nil},; {"C6_LOJA" ,"00" ,Nil},; {"C6_QTDEMP" ,1 ,Nil},; {"C6_QTDLIB" ,1 ,Nil}}

// // // // // // // // // // // // // // // //

Numero do Pedido Numero do Item no Pedido Cdigo do Produto Quantidade Vendida Preo Unitrio Liquido Valor Total do Item Data da Entrega Unidade de Medida Primar. Tipo de Entrada/Sada do Item Almoxarifado Percentual de Desconto Comisso Vendedor Cliente Loja do Cliente Quantidade Empenhada Quantidade Liberada

MSExecAuto({|x,y,z|Mata410(x,y,z)},aCabPv,{aItemPV1,aItemPV2},nOpc) If lMsErroAuto DisarmTransaction() break EndIf End Transaction If lMsErroAuto /* Se estiver em uma aplicao normal e ocorrer alguma inconsistncia nos parmetros passados, mostrar na tela o log informando qual coluna teve a inconsistncia. */ Mostraerro() Return .f. EndIf Return .t. ========================================================================================================================