Rotina Automática de Desmontagem de Produtos

Descrição:

Possibilita a realização das transferências múltiplas, ou seja, transferências de um único produto para vários produtos, através do mecanismo de rotina automática.

Produto:

Microsiga Protheus

Segmento:Serviços
Módulo:SIGAEST - Estoque/custos
Rotina:
RotinaNome Técnico
MATA242.PRX Desmontagem de produto
País(es):Todos
Banco(s) de Dados:Todos Homologados pela TOTVS
Tabelas Utilizadas:SD3 - Movimentações Internas
Parâmetros:
NomeTipoDescriçãoObrigatório
aCabecArray of RecordCabeçalhoX
aItensArray of RecordItensX
nOpcnumericOpção :3=Incluir 4=Alterar 5=EstornarX

Observações:

Alguns campos da tabela SD3 recebem o tratamento via dicionario de dados (SX3) ao qual permite ser utilizado somente por alguns módulos (X3_USADO). Por exemplo, o campo D3_RATEIO (% Rateio).
Para esses casos é necessário executar a preparação do ambiente passando a opção módulo ativa.

Exemplo: PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" Modulo "EST" tables "SB1", "SD3"

Exemplo
#include 'protheus.ch'
#include 'parmtype.ch'
#include "tbiconn.ch"

User Function myMATA242()

Local aAutoCab := {}
Local aAutoItens := {}

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" Modulo "EST" tables "SB1", "SD3"

aAutoCab := {   {"cProduto" , Pad("02 ", Len(SD3->D3_COD))     , Nil},;
                  {"cLocOrig" , "01"                 , Nil},;
                  {"nQtdOrig" , 100                  , Nil},;           
                  {"nQtdOrigSe" , CriaVar("D3_QTSEGUM")        , Nil},;           
                  {"cDocumento" , Pad("000000002", Len(SD3->D3_DOC)) , Nil},;          
                  {"cNumLote" , CriaVar("D3_NUMLOTE")        , Nil},;           
                  {"cLoteDigi" , CriaVar("D3_LOTECTL")        , Nil},;           
                  {"dDtValid" , CriaVar("D3_DTVALID")        , Nil},;           
                  {"nPotencia" , CriaVar("D3_POTENCI")        , Nil},;           
                  {"cLocaliza" , CriaVar("D3_LOCALIZ")        , Nil},;           
                  {"cNumSerie" , CriaVar("D3_NUMSERI")        , Nil}}
                  
aAutoItens := {{    {"D3_COD" , Pad("03 ", Len(SD3->D3_COD)) , Nil}, ;
                        {"D3_LOCAL" , "01"                         , Nil}, ;           
                        {"D3_QUANT" , 1                            , Nil}, ;           
                        {"D3_QTSEGUM",                          , Nil}, ;           
                        {"D3_RATEIO" , 20                           , Nil}},;                    
                     {  {"D3_COD" , Pad("04 ", Len(SD3->D3_COD)) , Nil}, ;           
                        {"D3_LOCAL" , "01"                         , Nil}, ;           
                        {"D3_QUANT" , 24                           , Nil}, ;           
                        {"D3_QTSEGUM",                          , Nil}, ;           
                        {"D3_RATEIO" , 80                           , Nil}}}
                       
//inclusão                      
MSExecAuto({|v,x,y,z| Mata242(v,x,y,z)},aAutoCab,aAutoItens,3,.T.) 

If lMsErroAuto  
    Mostraerro()
EndIf

Alert("Inclusao Ok. Verifique arquivos e continue para estorno")

Return