O Easy Import Control (SIGAEIC) disponibiliza a utilização de rotina automática para a rotina Itens DUIMP (EICLP500), sendo possível somente realizar a alteração das informações que compõe o mesmo.
Para sua utilização é necessário que exista um processo de Embarque/Desembaraço do tipo DUIMP (Tp. Registro - W6_TIPOREG) com suas invoices cadastradas.
A rotina Itens DUIMP (EICLP500) foi implementada com o conceito de MVC (Model View Controller) do Protheus, portanto não possui a mesma estrutura de MsExecAuto conforme o modelo antigo utilizado no Protheus.
No entanto é possível realizar a execução de forma automática através de modelo de dados, como exemplo abaixo.
É de suma importância que esteja posicionado no registro do embarque/desembaraço (SW6), para que seja carregado corretamente as informações da rotina Itens DUIMP (EICLP500). |
A estrutura do modelos de dados da rotina Itens DUIMP (EICLP500), está desenvolvida da seguinte forma:
Ao ativar o modelo de dado da rotina Itens DUIMP (EICLP500), serão carregados automaticamente seus modelos de dados, ou seja, serão carregadas as invoices que estão vinculadas ao processo de embarque/desembaraço com seus respectivos itens, e assim para cada item, os dados da mercadoria e LPCO's.
Caso já tenha sido feita uma alteração, informando dos modelos de dados de acréscimos, decréscimos, documentos vinculados e/ou certificado mercosul, também serão carregados devido ser somente possível realizar a manutenção de alteração.
#include 'protheus.ch' #include 'fwmvcdef.ch' user function ExecItDuimp() local cProcesso := "" local oModelo := nil local oModelSW9 := nil local oModelSWV := nil local oModelEIJ := nil local oModelEINA := nil local oModelEIND := nil local oModelEKQ := nil local oModelEIK := nil local oModelEJ9 := nil local nInvoice := 0 local nItens := 0 if RpcSetEnv("99","01",,,"EIC") dbSelectArea("SW6") cProcesso := PadR( "DES-AUTOMATICO",len(SW6->W6_HAWB)) SW6->(dbSetOrder(1)) if SW6->(dbSeek( xFilial("SW6") + cProcesso)) oModelo := FwLoadModel("EICLP500") oModelo:SetOperation(MODEL_OPERATION_UPDATE) oModelo:Activate() /* Modelo de dados: SW9DETAIL -> Invoices SWVDETAIL -> Itens da Invoices EIJMASTER -> Mercadoria EINADETAIL -> Acréscimos EINDDETAIL -> Decréscimos EKQDETAIL -> LPCO EIKDETAIL -> Documentos Vinculados EJ9DETAIL -> Certificado Mercosul */ // Percorre as invoices do processo embarque/desembaraço oModelSW9 := oModelo:getModel("SW9DETAIL") for nInvoice := 1 to oModelSW9:length() oModelSW9:goLine(nInvoice) if !oModelSW9:IsDeleted() // Percorre os itens das invoices oModelSWV := oModelo:getModel("SWVDETAIL") for nItens := 1 to oModelSWV:length() oModelSWV:goLine(nItens) if !oModelSWV:IsDeleted() oModelEIJ := oModelo:getModel("EIJMASTER") oModelEINA := oModelo:getModel("EINADETAIL") oModelEIND := oModelo:getModel("EINDDETAIL") oModelEKQ := oModelo:getModel("EKQDETAIL") oModelEIK := oModelo:getModel("EIKDETAIL") oModelEJ9 := oModelo:getModel("EJ9DETAIL") endif next nItens endif next nInvoice if oModelo:VldData() oModelo:CommitData() else VarInfo("Erro no execauto do modelo EICLP500-> ",oModelo:GetErrorMessage()) endif oModelo:DeActivate() oModelo:Destroy() FwFreeObj(oModelo) endif RpcClearEnv() endif return |
Modelo | Descrição |
---|---|
SW9DETAIL | Invoices |
SWVDETAIL | Itens das invoices |
EIJMASTER | Mercadoria |
EINADETAIL | Acréscimos |
EINDDETAIL | Decréscimos |
EKQDETAIL | LPCO |
EIKDETAIL | Documentos Vinculados |
EJ9DETAIL | Certificado Mercosul |