Á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 Catálogo de Produtos - EICCP400 (EICCP400), sendo possível incluir, alterar e excluir um catálogo. 

02. EXEMPLO DE UTILIZAÇÃO

A rotina Catálogo de Produtos - EICCP400 (EICC400) 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.

A estrutura do modelos de dados da rotina Catálogo de Produtos - EICCP400 (EICC400), está desenvolvida da seguinte forma:

    • EK9MASTER: esse modelo de dados representa os dados da capa do catálogo de produtos.
    • EKADETAIL: esse modelo de dados é relacionado ao modelo de dados EK9MASTER e representa a "Relação de Produtos" do catálogo de produtos.
    • EKBDETAIL: esse modelo de dados é relacionado ao modelo de dados EK9MASTER e representa a "Relação de Países de Origem e Fabricantes" do catálogo de produtos.
    • EKCDETAIL: esse modelo de dados é relacionado ao modelo de dados EK9MASTER e representa a "Relação de Atributos" do catálogo de produtos.


Importante

Ao inserir um produto no modelo de dados EKA deve-se gerar a informação do campo EKA_ITEM sequencial.

Ao informar os valores dos atributos no modelo de dados EKC deve ser informado um valor válido conforme valores disponíveis no portal de acordo com o ncm.



Exemplo
#include 'protheus.ch'
#include 'fwmvcdef.ch'
 
user function ExecCatProd()
    Private cCatalogo := '' 
    Private cVersao   := ''
    
    if RpcSetEnv("99","01",,,"EIC")
        catInclui()
        catAltera()
        catDelete()
    EndIf
Return nil    

Static function catInclui()        
    local oModel    := nil
    local oModelEK9 := nil
    local oGridEKA  := nil 
    local oGridEKB  := nil 
    local oGridEKC  := nil 
    local nLinEKC   := 0

    oModel:= FWLoadModel("EICCP400")
    oModel:SetOperation(MODEL_OPERATION_INSERT)
    oModel:Activate()
    oModelEK9 := oModel:getModel("EK9MASTER")
    cCatalogo := oModelEK9:getValue("EK9_COD_I")
    cVersao:=oModelEK9:getValue("EK9_VATUAL")
    oGridEKA  := oModel:getModel("EKADETAIL")
    oGridEKB := oModel:getModel("EKBDETAIL")
    oGridEKC  := oModel:GetModel("EKCDETAIL")
    
    oModelEK9:setValue("EK9_CNPJ","00000000")
    oModelEK9:setValue("EK9_NCM","01011010")
    oModelEK9:setValue("EK9_DSCCOM","Descrição da declaração")
    
    oGridEKA:setValue("EKA_PRDREF","PRD-01")
    oGridEKA:setValue("EKA_ITEM","001") 
    oGridEKA:AddLine()
    oGridEKA:setValue("EKA_PRDREF","PROD-006")
    oGridEKA:setValue("EKA_ITEM","002") 

    oGridEKB:setValue("EKB_PAIS","US")

    for nLinEKC := 1 to oGridEKC:length()
        oGridEKC:GoLine(nLinEKC)
        oGridEKC:SetValue("EKC_VALOR", 'Informacao' +alltrim(str(nLinEKC)))
    next nLinEKC
            
    if oModel:VldData()
        oModel:CommitData()
    else
        VarInfo("Erro no execauto do modelo EICCP400-> ",oModel:GetErrorMessage())  
    endif

    oModel:DeActivate()
    oModel:Destroy()
    FwFreeObj(oModel) 

return nil        

Static function catAltera()
    local oModel    := nil
    local oModelEK9 := nil  

    dbSelectArea("EK9")
    EK9->(dbSetOrder(1))
    
    if EK9->(dbSeek( xFilial("EK9") + cCatalogo + cVersao))
        oModel:= FWLoadModel("EICCP400")
        oModel:SetOperation(MODEL_OPERATION_UPDATE)
        oModel:Activate()
        oModelEK9 := oModel:getModel("EK9MASTER")
        oModelEK9:setValue("EK9_IMPORT",'01')
    
        if oModel:VldData()
            oModel:CommitData()
        else
            VarInfo("Erro no execauto do modelo EICCP400-> ",oModel:GetErrorMessage())  
        endif
    EndIf

    oModel:DeActivate()
    oModel:Destroy()
    FwFreeObj(oModel) 

Return nil

Static function catDelete()
    Local oModel := nil
            
    dbSelectArea("EK9")
    EK9->(dbSetOrder(1))
    
    if EK9->(dbSeek( xFilial("EK9") + cCatalogo + cVersao))
        oModel:= FWLoadModel("EICCP400")
        oModel:SetOperation(MODEL_OPERATION_DELETE)
        oModel:Activate()        
    
        if oModel:VldData()
            oModel:CommitData()
        else
            VarInfo("Erro no execauto do modelo EICCP400-> ",oModel:GetErrorMessage())  
        endif
    EndIf

    oModel:DeActivate()
    oModel:Destroy()
    FwFreeObj(oModel) 

Return nil

03. MODELOS DE DADOS

ModeloDescrição
EK9MasterCatálogo de produtos
EKADetailProdutos que fazem parte do catálogo
EKBDetailPaíses de origem e fabricantes
EKCDetailAtributos

04. TABELAS UTILIZADAS

  • EK9 - Catálogo
  • EKA - Produtos do catálogo
  • EKB - Países de origem e fabricantes
  • EKC - Atributos

05. DEMAIS INFORMAÇÕES