Panel |
---|
panelIconId | 1f321 |
---|
panelIcon | :thermometer: |
---|
panelIconText | 🌡️ |
---|
bgColor | #FFEBE6 |
---|
| Situação: |
ITEM COMEÇADO COM 60 NÃO INTEGRA DO SAPE E PRECISA SER CADASTRADO NO TOTVS DIRETO.Se o código do item começar com 47, na integração, já configura com item faturável no TOTVS MDM (Código diferente do SAPE) - > SAPE - > TOTVS 10404627 - > 39102898 - > 39102898 Existem dois SAPE, o SAPE Governo, integra com a Moderna e o outro SAPE integra com a Santillana. Campo1 Venda Campo8 Contrato DA Campo9 Volume\Edições Campo12 Volume\Edições Campo14 Livro SANTIBR-64116 CADASTRO NA BASE DE SOLUÇÕES Caros, bom dia! Solicito cadastro na base de soluções do item da planilha em anexo. Origem: Moderna. Destino Soluções. OBS: Material trata-se de uma caixa de Prefeitura. SANTIBR-59278 – MOCG009 + qg DuplicaItensEntreEmpresas.p - Copia Códigos de Itens de uma empresa para outra - Duplicar Códigos
Solicitar as informações abaixo referente aos itens a serem copiados: --- Preparar arquivo Excel Emp Origem | Emp Destino | cod item | Descr Item | Familia Comercial |
Salvar em CSV (MS-DOS) (*.csv) com o nome abaixo para facilitar futuras consultas DuplItemSantibr59278.csv Obs.: Descrição não precisa, mas o campo tem que estar, porque o qg precisa. Acessar a empresa de origem, abrir o editor e chamar o qg no caminho W:\ESP2\qgp\DuplicaItensEntreEmpresas.p. Code Block |
---|
/* Programa deve ser excutado na empresa origem */
/* Conectar banco mgcad da empresa destino */
IF NOT CONNECTED ("mgcad1") THEN DO:
FIND FIRST bco_empres WHERE
bco_empres.cod_empresa = '8' AND /* empresa destino */
bco_empres.cod_bco_logic = "mgcad" NO-LOCK NO-ERROR.
IF AVAIL bco_empres THEN
CONNECT -db VALUE(bco_empres.cod_bco_fisic) -ld mgcad1 VALUE(bco_empres.cod_param_conex).
END. |
Code Block |
---|
DEF TEMP-TABLE tt-item
FIELD ep-origem AS INT
FIELD ep-destino AS INT
FIELD it-codigo LIKE mgcad1.ITEM.it-codigo
FIELD des-item LIKE mgcad1.ITEM.desc-item
FIELD fm-codigo LIKE mgcad1.ITEM.fm-codigo.
INPUT FROM I:\Leopoldo\Duplica_Item_SANTIBR-65026.csv.
REPEAT:
CREATE tt-item.
IMPORT DELIMITER ";" tt-item.
END.
FIND FIRST tt-item WHERE tt-item.it-codigo = "" no-lock NO-ERROR.
IF AVAIL tt-item THEN DELETE tt-item.
DEF BUFFER bf-it-sape-int FOR modlog.mocd-it-sape-int.
FOR EACH tt-item:
/* verifica se item ja existe na empresa destino */
FIND mgcad1.ITEM WHERE mgcad1.ITEM.it-codigo = tt-item.it-codigo NO-LOCK NO-ERROR.
IF AVAIL mgcad1.ITEM THEN DO:
MESSAGE tt-item.it-codigo + " Item ja existe na empresa destino"
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
UNDO, RETRY.
END.
/* Consulta cadastro para gerar registro de integração */
FIND mgcad.ITEM WHERE mgcad.ITEM.it-codigo = tt-item.it-codigo NO-LOCK NO-ERROR.
IF NOT AVAIL mgcad.ITEM THEN DO:
MESSAGE "Nao localizado na empresa origem o item " + tt-item.it-codigo
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
UNDO, RETRY.
END.
FIND LAST modlog.mocd-it-sape-int WHERE modlog.mocd-it-sape-int.acao = "I" AND
modlog.mocd-it-sape-int.empresa = string(tt-item.ep-origem) AND
modlog.mocd-it-sape-int.campo1 = tt-item.it-codigo NO-LOCK NO-ERROR.
IF AVAIL modlog.mocd-it-sape-int THEN DO:
CREATE bf-it-sape-int.
BUFFER-COPY modlog.mocd-it-sape-int EXCEPT empresa dt-recebido campo8 ident hr-recebido dt-processado hr-processado l-processado TO bf-it-sape-int.
ASSIGN bf-it-sape-int.dt-recebido = TODAY
bf-it-sape-int.hr-recebido = STRING(TIME, "hh:MM")
bf-it-sape-int.l-processado = NO
bf-it-sape-int.empresa = string(tt-item.ep-destino)
bf-it-sape-int.campo5 = tt-item.fm-codigo.
DISP bf-it-sape-int.campo1 FORMAT "x(25)".
END.
ELSE DO:
/* criando integração do item */
FIND mgcad.ITEM WHERE mgcad.ITEM.it-codigo = tt-item.it-codigo NO-LOCK NO-ERROR.
FIND FIRST moe-item WHERE moe-item.it-codigo = tt-item.it-codigo NO-LOCK NO-ERROR.
FIND FIRST item-lanc WHERE item-lanc.it-codigo = tt-item.it-codigo NO-LOCK NO-ERROR.
FIND FIRST item-agrupa WHERE item-agrupa.it-codigo = tt-item.it-codigo NO-LOCK NO-ERROR.
CREATE mocd-it-sape-int.
ASSIGN mocd-it-sape-int.nome = "LIVRO"
mocd-it-sape-int.acao = "I"
mocd-it-sape-int.campo1 = mgcad.ITEM.it-codigo
mocd-it-sape-int.campo2 = mgcad.ITEM.desc-item
mocd-it-sape-int.campo4 = mgcad.ITEM.fm-codigo
mocd-it-sape-int.campo9 = IF AVAIL item-agrupa THEN item-agrupa.item-volume ELSE ""
mocd-it-sape-int.campo14 = IF AVAIL moe-item THEN string(moe-item.cod-mdm) ELSE ""
mocd-it-sape-int.campo17 = IF AVAIL moe-item THEN moe-item.cod-tipo-livro ELSE ""
mocd-it-sape-int.campo6 = IF AVAIL moe-item THEN string(moe-item.editoria) ELSE ""
mocd-it-sape-int.campo7 = IF AVAIL item-lanc THEN STRING(YEAR(item-lan.dt-prev-lanc),"9999") + "-" +
STRING(MONTH(item-lanc.dt-prev-lanc),"99") + "-" +
STRING(DAY(item-lanc.dt-prev-lanc),"99") ELSE ""
mocd-it-sape-int.campo10 = IF AVAIL item-lanc THEN STRING(YEAR(item-lan.dt-lim-venda),"9999") + "-" +
STRING(MONTH(item-lanc.dt-lim-venda),"99") + "-" +
STRING(DAY(item-lanc.dt-lim-venda),"99") ELSE ""
mocd-it-sape-int.campo11 = IF AVAIL item-lanc THEN STRING(YEAR(item-lan.dt-distrato),"9999") + "-" +
STRING(MONTH(item-lanc.dt-distrato),"99") + "-" +
STRING(DAY(item-lanc.dt-distrato),"99") ELSE ""
mocd-it-sape-int.campo12 = IF AVAIL item-lanc THEN item-lanc.it-titulo ELSE ""
mocd-it-sape-int.campo13 = IF AVAIL item-lanc THEN item-lanc.situ-projeto ELSE ""
mocd-it-sape-int.dt-recebido = TODAY
mocd-it-sape-int.hr-recebido = STRING(TIME, "hh:MM")
mocd-it-sape-int.l-processado = NO
mocd-it-sape-int.empresa = string(tt-item.ep-destino)
mocd-it-sape-int.campo5 = tt-item.fm-codigo.
END.
IF NOT tt-item.it-codigo BEGINS "22" AND NOT tt-item.it-codigo BEGINS "23" THEN DO:
FIND item-agrupa WHERE item-agrupa.it-codigo = tt-item.it-codigo NO-LOCK NO-ERROR.
IF NOT AVAIL item-agrupa THEN DO:
MESSAGE "Não localizado cadastro do volume para o item " tt-item.it-codigo
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
UNDO, RETRY.
END.
/* Criando Integração do volume */
IF CAN-FIND(FIRST mgcad1.ITEM WHERE mgcad1.ITEM.it-codigo = item-agrupa.item-volume) THEN DO:
MESSAGE "Volume do item ja cadastrado " + item-agrupa.item-volume
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
END.
ELSE DO:
FIND mgcad.ITEM WHERE mgcad.ITEM.it-codigo = item-agrupa.item-volume NO-LOCK NO-ERROR.
FIND FIRST moe-item WHERE moe-item.it-codigo = item-agrupa.item-volume NO-LOCK NO-ERROR.
FIND FIRST item-lanc WHERE item-lanc.it-codigo = item-agrupa.item-volume NO-LOCK NO-ERROR.
CREATE mocd-it-sape-int.
ASSIGN mocd-it-sape-int.nome = "LIVRO"
mocd-it-sape-int.acao = "I"
mocd-it-sape-int.campo1 = mgcad.ITEM.it-codigo
mocd-it-sape-int.campo2 = mgcad.ITEM.desc-item
mocd-it-sape-int.campo4 = mgcad.ITEM.fm-codigo
mocd-it-sape-int.campo9 = item-agrupa.item-volume
mocd-it-sape-int.campo14 = IF AVAIL moe-item THEN string(moe-item.cod-mdm) ELSE ""
mocd-it-sape-int.campo17 = IF AVAIL moe-item THEN moe-item.cod-tipo-livro ELSE ""
mocd-it-sape-int.campo6 = IF AVAIL moe-item THEN string(moe-item.editoria) ELSE ""
mocd-it-sape-int.campo7 = IF AVAIL item-lanc THEN STRING(YEAR(item-lan.dt-prev-lanc),"9999") + "-" +
STRING(MONTH(item-lanc.dt-prev-lanc),"99") + "-" +
STRING(DAY(item-lanc.dt-prev-lanc),"99") ELSE ""
mocd-it-sape-int.campo10 = IF AVAIL item-lanc THEN STRING(YEAR(item-lan.dt-lim-venda),"9999") + "-" +
STRING(MONTH(item-lanc.dt-lim-venda),"99") + "-" +
STRING(DAY(item-lanc.dt-lim-venda),"99") ELSE ""
mocd-it-sape-int.campo11 = IF AVAIL item-lanc THEN STRING(YEAR(item-lan.dt-distrato),"9999") + "-" +
STRING(MONTH(item-lanc.dt-distrato),"99") + "-" +
STRING(DAY(item-lanc.dt-distrato),"99") ELSE ""
mocd-it-sape-int.campo12 = IF AVAIL item-lanc THEN item-lanc.it-titulo ELSE ""
mocd-it-sape-int.campo13 = IF AVAIL item-lanc THEN item-lanc.situ-projeto ELSE ""
mocd-it-sape-int.dt-recebido = TODAY
mocd-it-sape-int.hr-recebido = STRING(TIME, "hh:MM")
mocd-it-sape-int.l-processado = NO
mocd-it-sape-int.empresa = string(tt-item.ep-destino)
mocd-it-sape-int.campo5 = tt-item.fm-codigo.
END.
END.
END. |
Verificar se a empresa destino está informada corretamente, que neste caso é a 8 e rodar o qg para conectar os bancos empresa de origem e destino e rodar a parte do programa que está selecionado a baixo. Depois que rodar o programa, comentar o trecho do programa como abaixo Descomentar o programa a linha DEF TEMP-TABLE até o final do programe e informar o local onde o arquivo *csv está gavado para que o qg possa acessá-lo, como exemplo abaixo e executar o programa. Acessar a empresa de destino e rodar o mocg009 e executar Deve abrir um arquivo de log informando os itens que foram importados, com a letra I de importados, como abaixo Letra A é referente a advertência e E de erros OBS: QG da Cristina Jorge Pode rodar o qg G:\Leopoldo\Consulta_Mocd_It_Sape_Int.p para verificar se os itens foram criados na tabela para o mocg009 importar. Se o item não copiar de primeira, pode consultar se o item está na tabela , mocd-it-sape-in Code Block |
---|
qg-consulta-item-sape-dts.p
FOR EACH mocd-it-sape-int
WHERE campo1 = '46801074':
DISP mocd-it-sape-int
EXCEPT desc-erro log-env-sape
WITH WIDTH 300 1 COLUMN.
END
dt-recebido > 08/11/2023 // mm/dd/aaaa
/* WHERE campo1 = '46801074' OR campo1 = '10224720': */
/* MOCG009 */ |
Se estiver e estiver com sim no campo l-processado, rodar este qg, para mudar o item para não processado para então rodar o mocg009 novamente. As vezes, tenta importar o item, antes do volume. Code Block |
---|
FOR EACH mocd-it-sape-int WHERE campo1 = "120003585":
l-processado = NO.
END. |
Rodar o mocg009 novamente Code Block |
---|
************************* Consultar da Lista os itens que foram integrados
DEF TEMP-TABLE tt-item
FIELD itens LIKE item.it-codigo.
INPUT FROM "I:\Leopoldo\item.csv". // Lista de códigos de pedidos e código dos emitentes
REPEAT:
CREATE tt-item.
IMPORT DELIMITER ";" tt-item.
END.
INPUT CLOSE.
OUTPUT TO I:\Leopoldo\itens_importados.csv.
PUT UNFORMATTED
"itens" SKIP.
FOR EACH tt-item WHERE
tt-item.itens <> "": //Diferente de branco na tt-pedido
PROCESS EVENTS. // Para não travar a tela quando lê muitos dados
FIND FIRST ITEM WHERE // find first ler o primeiro item da tabela
ITEM.it-codigo = tt-item.itens NO-LOCK NO-ERROR.
IF AVAIL ITEM THEN DO:
PUT UNFORMATTED
ITEM.it-codigo SKIP.
END.
END.
OUTPUT CLOSE. |
|