Árvore de páginas


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.

Importante

É 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:

    • SW9DETAIL: esse modelo de dados representa as Invoices que foram vinculados ao processo de embarque/desembaraço, não é possível realizar nenhuma atualização, somente utilizado para navegar entre os seus itens. Na tela da rotina, é o grid que está localizado na Aba Itens → Invoices.
    • SWVDETAIL: esse modelo de dados é relacionado ao modelo de dados SW9DETAIL que representa os Itens das Invoices. Na tela da rotina, é o grid que está localizado na Aba Itens → Itens, e também, na aba Tributação → Itens.
    • EIJMASTER: esse modelo de dados é relacionado ao modelo de dados SWVDETAIL, que representa os dados da Mercadoria para um item da Invoice. Na tela da rotina, são os campos que estão localizado na aba Itens → aba Mercadoria, e também, na aba Tributação → as abas: Imposto de Importação, IPI, PIS/COFINS e ICMS.
    • EINADETAIL: esse modelo de dados é relacionado ao modelo de dados SWVDETAIL, que representa os dados dos Acréscimos para um item da Invoice. Na tela da rotina, é grid Acréscimos que está localizado na aba Itens → aba Acréscimos/Deduções.
    • EINDDETAIL: esse modelo de dados é relacionado ao modelo de dados SWVDETAIL, que representa os dados dos Decréscimos para um item da Invoice. Na tela da rotina, é grid Deduções que está localizado na aba Itens → aba Acréscimos/Deduções.
    • EKQDETAIL: esse modelo de dados é relacionado ao modelo de dados SWVDETAIL, que representa os dados dos LPCO para um item da Invoice. Na tela da rotina, é grid LPCO que está localizado na aba Itens → aba LPCO.
    • EIKDETAIL: esse modelo de dados é relacionado ao modelo de dados SWVDETAIL, que representa os dados dos Documentos Vinculados para um item da Invoice. Na tela da rotina, é grid que está localizado na aba Itens → aba Documentos Vinculados
    • EJ9DETAIL: esse modelo de dados é relacionado ao modelo de dados SWVDETAIL, que representa os dados dos Certificado Mercosul para um item da Invoice. Na tela da rotina, é grid que está localizado na aba Itens → aba Certificado Digital

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.


Exemplo
#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

  • SW9 - Invoices
  • SWV - Itens da Invoices
  • EIJ - Mercadoria
  • EIN - Acréscimos e Decréscimos
  • EKQ - LPCO
  • EIK - Documentos Vinculados
  • EJ9 - Certificado Mercosul

05. DEMAIS INFORMAÇÕES