Passo a passo: | #INCLUDE "PROTHEUS.CH" /* Exemplo de MsExecAuto da rotina de Inventario (MATA270) com uso de controle de contagem definido pelo parametro MV_CONTINV Neste exemplo serao incluidos 3 registros para o mesmo produto com incremento automatico do campo B7_CONTAGE (segundo parametro .T. do MATA270). A propria rotina ira criar B7_CONTAGE 001, 002 E 003. Em seguida, o registro referente B7_CONTAGE = 002 sera alterado ilustrando o exemplo de alteracao por MsExecAuto da rotina de inventario MATA270. Notas importantes: 1) Para inclusao (opcao 3) com parametro de B7_CONTAGE automatico (segundo parametro do MATA270), nao poderao ter os campos B7_CONTAGE e B7_ESCOLHA no array de campos passado para a rotina 2) Para alteracao, nao podera ser executada a rotina automatica com B7_CONTAGE automatico 3) Para alteracao, TODOS os campos da chave utilizada deverao constar do array, inclusive o B7_CONTAGE para permitir o correto posicionamento do registro desejado para alteracao Chave indice 1: B7_FILIAL+B7_DATA+B7_COD+B7_LOCAL+B7_LOCALIZ+B7_NUMSERI+B7_LOTECTL+B7_NUMLOTE+B7_CONTAGE 4) Para alteracao, os campos pertencentes a chave utilizada nao poderao ser alterados, devendo os mesmos serem coincidentes com um registro existente, caso contrario nao sera possivel posicionar o registro para alteracao. 5) Para alteracao, os campos do tipo CARACTER, devem obedecer o tamanho dos campos na base de dados, devendo ser completados com espacos a direita igualando o tamanho nos registros da tabela */ User Function TesteInvent Local aAuto := {} Private lMsErroAuto := .F. Aadd(aAuto, {"B7_FILIAL" , "01" , NIL}) Aadd(aAuto, {"B7_LOCAL" , "01" , NIL}) Aadd(aAuto, {"B7_TIPO" , "PA" , NIL}) Aadd(aAuto, {"B7_DOC" , "DOCTO01" , NIL}) Aadd(aAuto, {"B7_QUANT" , 8000.00 , NIL}) Aadd(aAuto, {"B7_DATA" , Stod("20160629") , NIL}) Aadd(aAuto, {"B7_DTVALID" , Stod("20170613") , NIL}) Aadd(aAuto, {"B7_COD" , "TSTINVENT " , NIL}) Aadd(aAuto, {"B7_LOTECTL" , Pad("LOTE0001" , Len(SB7->B7_LOTECTL)) , NIL}) Aadd(aAuto, {"B7_NUMLOTE" , Pad("000001" , Len(SB7->B7_NUMLOTE)) , NIL}) Aadd(aAuto, {"B7_LOCALIZ" , Pad("LCZLCZ" , Len(SB7->B7_LOCALIZ)) , NIL}) Aadd(aAuto, {"B7_NUMSERI" , Pad("" , Len(SB7->B7_NUMSERI)) , NIL}) Aadd(aAuto, {"B7_ORIGEM" , "MATA270" , NIL}) Aadd(aAuto, {"B7_STATUS" , "1" , NIL}) Aadd(aAuto, {"INDEX" , 1 , NIL}) lMsErroAuto := .F. MsExecAuto({|a,b,c| MATA270(a,b,c)}, aAuto, .T., 3) If lMsErroAuto MostraErro() Else Alert("Incluido B7_CONTAGE " + SB7->B7_CONTAGE + " -> quantidade " + Alltrim(Str(SB7->B7_QUANT))) Endif aAuto := {} Aadd(aAuto, {"B7_FILIAL" , "01" , NIL}) Aadd(aAuto, {"B7_LOCAL" , "01" , NIL}) Aadd(aAuto, {"B7_TIPO" , "PA" , NIL}) Aadd(aAuto, {"B7_DOC" , "DOCTO01" , NIL}) Aadd(aAuto, {"B7_QUANT" , 10000.00 , NIL}) Aadd(aAuto, {"B7_DATA" , Stod("20160629") , NIL}) Aadd(aAuto, {"B7_DTVALID" , Stod("20170613") , NIL}) Aadd(aAuto, {"B7_COD" , "TSTINVENT " , NIL}) Aadd(aAuto, {"B7_LOTECTL" , Pad("LOTE0001" , Len(SB7->B7_LOTECTL)) , NIL}) Aadd(aAuto, {"B7_NUMLOTE" , Pad("000001" , Len(SB7->B7_NUMLOTE)) , NIL}) Aadd(aAuto, {"B7_LOCALIZ" , Pad("LCZLCZ" , Len(SB7->B7_LOCALIZ)) , NIL}) Aadd(aAuto, {"B7_NUMSERI" , Pad("" , Len(SB7->B7_NUMSERI)) , NIL}) Aadd(aAuto, {"B7_ORIGEM" , "MATA270" , NIL}) Aadd(aAuto, {"B7_STATUS" , "1" , NIL}) Aadd(aAuto, {"INDEX" , 1 , NIL}) lMsErroAuto := .F. MsExecAuto({|a,b,c| MATA270(a,b,c)}, aAuto, .T., 3) If lMsErroAuto MostraErro() Else Alert("Incluido B7_CONTAGE " + SB7->B7_CONTAGE + " -> quantidade " + Alltrim(Str(SB7->B7_QUANT))) Endif aAuto := {} Aadd(aAuto, {"B7_FILIAL" , "01" , NIL}) Aadd(aAuto, {"B7_LOCAL" , "01" , NIL}) Aadd(aAuto, {"B7_TIPO" , "PA" , NIL}) Aadd(aAuto, {"B7_DOC" , "DOCTO01" , NIL}) Aadd(aAuto, {"B7_QUANT" , 12000.00 , NIL}) Aadd(aAuto, {"B7_DATA" , Stod("20160629") , NIL}) Aadd(aAuto, {"B7_DTVALID" , Stod("20170613") , NIL}) Aadd(aAuto, {"B7_COD" , "TSTINVENT " , NIL}) Aadd(aAuto, {"B7_LOTECTL" , Pad("LOTE0001" , Len(SB7->B7_LOTECTL)) , NIL}) Aadd(aAuto, {"B7_NUMLOTE" , Pad("000001" , Len(SB7->B7_NUMLOTE)) , NIL}) Aadd(aAuto, {"B7_LOCALIZ" , Pad("LCZLCZ" , Len(SB7->B7_LOCALIZ)) , NIL}) Aadd(aAuto, {"B7_NUMSERI" , Pad("" , Len(SB7->B7_NUMSERI)) , NIL}) Aadd(aAuto, {"B7_ORIGEM" , "MATA270" , NIL}) Aadd(aAuto, {"B7_STATUS" , "1" , NIL}) Aadd(aAuto, {"INDEX" , 1 , NIL}) lMsErroAuto := .F. MsExecAuto({|a,b,c| MATA270(a,b,c)}, aAuto, .T., 3) If lMsErroAuto MostraErro() Else Alert("Incluido B7_CONTAGE " + SB7->B7_CONTAGE + " -> quantidade " + Alltrim(Str(SB7->B7_QUANT))) Endif aAuto := {} Aadd(aAuto, {"B7_FILIAL" , "01" , NIL}) Aadd(aAuto, {"B7_LOCAL" , "01" , NIL}) Aadd(aAuto, {"B7_TIPO" , "PA" , NIL}) Aadd(aAuto, {"B7_DOC" , "DOCTO01" , NIL}) Aadd(aAuto, {"B7_QUANT" , 20000.00 , NIL}) Aadd(aAuto, {"B7_DATA" , Stod("20160629") , NIL}) Aadd(aAuto, {"B7_DTVALID" , Stod("20170613") , NIL}) Aadd(aAuto, {"B7_COD" , "TSTINVENT " , NIL}) Aadd(aAuto, {"B7_LOTECTL" , Pad("LOTE0001" , Len(SB7->B7_LOTECTL)) , NIL}) Aadd(aAuto, {"B7_NUMLOTE" , Pad("000001" , Len(SB7->B7_NUMLOTE)) , NIL}) Aadd(aAuto, {"B7_LOCALIZ" , Pad("LCZLCZ" , Len(SB7->B7_LOCALIZ)) , NIL}) Aadd(aAuto, {"B7_NUMSERI" , Pad("" , Len(SB7->B7_NUMSERI)) , NIL}) Aadd(aAuto, {"B7_CONTAGE" , Pad("002" , Len(SB7->B7_CONTAGE)) , NIL}) Aadd(aAuto, {"B7_ORIGEM" , "MATA270" , NIL}) Aadd(aAuto, {"B7_STATUS" , "1" , NIL}) Aadd(aAuto, {"INDEX" , 1 , NIL}) lMsErroAuto := .F. MsExecAuto({|a,b,c| MATA270(a,b,c)}, aAuto, .F., 4) If lMsErroAuto MostraErro() Else Alert("Alterado B7_CONTAGE " + SB7->B7_CONTAGE + " -> quantidade " + Alltrim(Str(SB7->B7_QUANT))) Endif
|