CONTEÚDO

  1. Visão Geral
  2. Exemplo de Utilização
  3. Modelos de Dados
  4. Tabelas Utilizadas
  5. Demais Informações

01. VISÃO GERAL

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.

02. EXEMPLO DE UTILIZAÇÃO

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

03. MODELOS DE DADOS

ModeloDescrição
SW9DETAILInvoices
SWVDETAILItens das invoices
EIJMASTERMercadoria
EINADETAILAcréscimos
EINDDETAILDecréscimos 
EKQDETAILLPCO
EIKDETAILDocumentos Vinculados
EJ9DETAILCertificado Mercosul

04. TABELAS UTILIZADAS

05. DEMAIS INFORMAÇÕES