Função: A430Reserv
Versões: | Advanced Protheus 7.10 , Microsiga Protheus 8.11 | Nível de Acesso: |
|
Descrição:A rotina automatica do MATA430 D foi desenvolvida através do uso de função em substituição a tradicional rotina automatica. A mudança foi motivada pela necessidade de alta performance no uso desta funcionalidade. Sintaxe:A430Reserv ( aOPERACAOcNUMEROcPRODUTOcLOCALnQUANTaLOTE [ aHEADER ] [ aCOLS ] [ nQUANTELIM ] ) --> Nil Retorno:Nil(nulo)- Informa que a operação foi bem sucessida.
Parâmetros:
| Nome |
|
| Tipo |
|
| Descrição |
|
| Default |
|
| Obrigatório |
|
| Referência |
|
| aOPERACAO |
|
| vetor |
|
| [1] -> [Operacao : 1 Inclui,2 Altera,3 Exclui] [2] -> [Tipo da Reserva] [3] -> [Documento que originou a Reserva] [4] -> [Solicitante] [5] -> [Filial da Reserva] [6] -> [Observacao] |
|
|
|
|
| X |
|
|
|
|
| cNUMERO |
|
| caracter |
|
| Número da reserva |
|
|
|
|
| X |
|
|
|
|
| cPRODUTO |
|
| caracter |
|
| Código do produto |
|
|
|
|
| X |
|
|
|
|
| cLOCAL |
|
| caracter |
|
| Almoxarifado da reserva |
|
|
|
|
| X |
|
|
|
|
| nQUANT |
|
| numerico |
|
| Quantidade reservada |
|
|
|
|
| X |
|
|
|
|
| aLOTE |
|
| vetor |
|
| [1] -> [Numero do Lote] [2] -> [Lote de Controle] [3] -> [Localizacao] [4] -> [Numero de Serie] |
|
|
|
|
| X |
|
|
|
|
| aHEADER |
|
| vetor |
|
| aHeader com os campos da getdados. Somente utilizar para gravar campos adicionais, ou que terão seu conteúdo modificado. |
|
|
|
|
|
|
|
|
|
|
| aCOLS |
|
| vetor |
|
| Acols da getdados. Somente utilizar para gravar campos adicionais/modificar conteúdo padrão. |
|
|
|
|
|
|
|
|
|
|
| nQUANTELIM |
|
| numerico |
|
| Não informar. Uso interno. |
|
|
|
|
|
|
|
|
|
|
Exemplo de execução utilizando campos que não são tratados pela rotina automática, utilizando a gravação do campo C0_FILRES, com um conteúdo diferente da filial logada. #INCLUDE "PROTHEUS.CH" #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" Para esse tipo de procedimento funcionar corretamente, é necessário utilizar as variáveis aHeader e aCols, conforme documentada no quadro acima. #include 'totvs.ch' #include "RWMAKE.CH" User Function My430RESUSER FUNCTION MYA430RES() Local aOperacao := {} Local cNumero := '' //C0_NUM Local cProduto := 'FAT000000000000000000000000001'000000000000002 ' //Será utilizado o conteúdo do campo C0_PRODUTO exatamente com o seu tamanho, contando os espaços em branco. Exemplo: C0_PRODUTO tamanho 16 → "000001 " Local cLocal := '01' //C0_LOCAL Local nQuant := 2 //C0_QUANT Local aLote := {"","","",""} Local nOpc := 1 //1 - Inclui, 2 - Altera, 3 - Exclui Local lReservOk := .T. Private aHeader := {} Private aCols := {} //PREPARACAO DO AMBIENTE RpcSetEnv("T1","D MG 01","Administrador","","FAT","MATA430") If nOpc == 1 //INCLUIR REGISTRO ConOutÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Abertura do ambiente | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ConOut(Repl("-",80)) ConOut ConOut(PadC("Teste de Inclusao de 10 apontamentos de venda com 1 item cada",80))PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "FAT" DbSelectArea("SX3") DbSetOrder(2) If SX3->(dbSeek( //MONTAGEM DO HEADER E ACOLS PARA CAMPOS CUSTOMIZADOS OU PADRAO DbSelectArea("SC0") If FieldPos("C0_FILRES") )> 0 aAdd aAdd(aHeader,{ TRIM(X3Titulo()) GetSx3Cache("C0_FILRES", 'X3_TITULO'),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_CAMPO' ),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_PICTURE'),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_TAMANHO'),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_DECIMAL'),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_VALID' ),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_USADO' ),; SX3->X3_TIPO GetSx3Cache("C0_FILRES", 'X3_TIPO' ),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_F3' ),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_CONTEXT'),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_CBOX' ),; SX3->X3 GetSx3Cache("C0_FILRES", 'X3_RELACAO') }) Endif aadd(aCOLS,"D MG 02") aOperacao:= {nOpc,; //[1] -> [Operacao : 1 Inclui,2 Altera,3 Exclui] "VD",; //[2] -> [Tipo da Reserva] "",; //[3] -> [Documento que originou a Reserva] "",; //[4] -> [Solicitante] xFilial("SC0")} //[5] -> [Filial da Reserva] lReservOk := a430Reserv(aOperacao,cNumero,cProduto,cLocal,nQuant,aLote,aHeader,aCols) If lReservOk Conout('Reserva cadastrada com Sucesso!') Else Conout('Problemas ao cadastrar reserva') EndIf ElseIf nOPC == 2 //ALTERAR REGISTRO ConOut(Repl("-",80)) ConOut(PadC("Teste de Alteracao",80)) cNumero := 'FTU316' //SELECIONAR ITEM PARA ALTERAR DbSelectArea("SC0") SC0->(DbSetOrder(1)) IF!SC0->(DbSeek(xFilial("SC0")+cNumero+cProduto+cLocal)) ConOut("Nao localizado o item para alterar") lReservOk:=.F. Return lReservOk EndIf aOperacao:= {nOpc,; //[1] -> [Operacao : 1 Inclui,2 Altera,3 Exclui] "VD",; //[2] -> [Tipo da Reserva] "000002 ",; //[3] -> [Documento que originou a Reserva] SC0->C0_SOLICIT,; //[4] -> [Solicitante] SC0->C0_FILIAL} //[5] -> [Filial da Reserva] nQuant:= SC0->C0_QUANT lReservOk := a430Reserv(aOperacao,cNumero,cProduto,cLocal,nQuant,aLote,aHeader,aCols) If lReservOk Conout('Reserva alterada com Sucesso!') Else Conout('Problemas ao alterar reserva') EndIf ElseIf nOPC == 3 //EXCLUIR REGISTRO ConOut(Repl("-",80)) ConOut(PadC("Teste de Exclusao",80)) cNumero := 'FTU316' //SELECIONAR ITEM PARA EXCLUIR DbSelectArea("SC0") SC0->(DbSetOrder(1)) IF!SC0->(DbSeek(xFilial("SC0")+cNumero+cProduto+cLocal)) ConOut("Nao localizado o item para excluir") lReservOk:=.F. Return lReservOk EndIf
aOperacao:= {nOpc,; //[1] -> [Operacao : 1 Inclui,2 Altera,3 Exclui] SC0->C0_TIPO,; //[2] -> [Tipo da Reserva] SC0->C0_DOCRES,; //[3] -> [Documento que originou a Reserva] SC0->C0_SOLICIT,; //[4] -> [Solicitante] SC0->C0_FILIAL} //[5] -> [Filial da Reserva] nQuant:= SC0->C0_QUANT lReservOk := Endif aOperacao:= {1,"PD","000010","",cFilAnt} aadd(aCOLS,"D MG 02") lReservOk := a430Reserv(aOperacao,cNumero,cProduto,cLocal,nQuant,aLote,aHeader,aCols) If If lReservOk Conout('Reserva cadastrada excluida com Sucesso!') Else Else Conout('Problemas ao cadastrar excluir reserva') EndIf EndIfRESET ENVIRONMENT RETURN RpcClearEnv() Return lReservOk
|