Histórico da Página
...
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.Para mais informações
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.
Aviso | ||
---|---|---|
| ||
É 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.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#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
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 |
...