From 487bf2eda484060b07aaabf932807888d4d0d75a Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 26 Feb 2026 16:38:58 -0300 Subject: [PATCH 1/3] add product module and add icon to modules --- src/flash/flash.module.ts | 157 ++++++++++++++++---------------- src/products/products.module.ts | 73 +++++++++++++++ 2 files changed, 153 insertions(+), 77 deletions(-) create mode 100644 src/products/products.module.ts diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 491ffcb..c042f82 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -2,78 +2,81 @@ import { createModuleFactory } from "@davinti/jeff"; const moduleFactory = createModuleFactory(["C5"]); -export default moduleFactory.createModule({ - id: "flash-de-vendas", - description: "Flash de Vendas", - label: "Flash de Vendas", - queries: { - "flash": { - name: "Flash de Vendas", - display: { - type: "flash", - settings: { - group_column: "canalapp", - total_indicator_column: "is_total", - null_label_key: "Geral", - }, - header: { - title_column: "canalapp", - value_column: "venda_dia", - value_format: "currency", - }, - rows: [ - { - label: "Meta Mês", - column: "meta_mes", - format: "currency_short", - }, - { - label: "VDA", - column: "vda", - format: "currency_short", - }, - { - label: "DMA", - column: "dma", - format: "currency_short", - }, - { - label: "Meta Dia", - column: "meta_dia", - format: "currency_short", - }, - { - label: "Meta Margem Dia", - column: "meta_margem_dia", - format: "percentage", - }, - { - label: "Qtd Clientes", - column: "qtd_clientes", - format: "integer", - }, - { - label: "Ticket Médio", - column: "ticket_medio", - format: "currency", - }, - { - label: "Margem", - column: "margem", - format: "percentage", - accent: true, - }, - ], - }, - params: ["data_venda"], - } - }, - entrypoint: "flash", -}).withImplementations({ - C5: { - flash: (args) => { - return { - sql: /*sql*/` +export default moduleFactory + .createModule({ + id: "flash-de-vendas", + description: "Flash de Vendas", + label: "Flash de Vendas", + icon: "bar-chart", + queries: { + flash: { + name: "Flash de Vendas", + display: { + type: "flash", + settings: { + group_column: "canalapp", + total_indicator_column: "is_total", + null_label_key: "Geral", + }, + header: { + title_column: "canalapp", + value_column: "venda_dia", + value_format: "currency", + }, + rows: [ + { + label: "Meta Mês", + column: "meta_mes", + format: "currency_short", + }, + { + label: "VDA", + column: "vda", + format: "currency_short", + }, + { + label: "DMA", + column: "dma", + format: "currency_short", + }, + { + label: "Meta Dia", + column: "meta_dia", + format: "currency_short", + }, + { + label: "Meta Margem Dia", + column: "meta_margem_dia", + format: "percentage", + }, + { + label: "Qtd Clientes", + column: "qtd_clientes", + format: "integer", + }, + { + label: "Ticket Médio", + column: "ticket_medio", + format: "currency", + }, + { + label: "Margem", + column: "margem", + format: "percentage", + accent: true, + }, + ], + }, + params: ["data_venda"], + }, + }, + entrypoint: "flash", + }) + .withImplementations({ + C5: { + flash: (args) => { + return { + sql: /*sql*/ ` select tes.canalapp, tes.nomeempresaapp, @@ -97,8 +100,8 @@ where 1=1 and tvf.vlrvendaacumulada > 0 and tvf.dtavda = TO_DATE(${args.data_venda}, 'YYYY-MM-DD') group by rollup(canalapp, nomeempresaapp) -order by grouping(canalapp) desc, grouping(nomeempresaapp) desc` - }; - } - } -}) +order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, + }; + }, + }, + }); diff --git a/src/products/products.module.ts b/src/products/products.module.ts new file mode 100644 index 0000000..798aa62 --- /dev/null +++ b/src/products/products.module.ts @@ -0,0 +1,73 @@ +import { createModuleFactory } from "@davinti/jeff"; + +const moduleFactory = createModuleFactory(["C5"]); + +export default moduleFactory + .createModule({ + id: "consulta-de-produto", + description: "Consulta de Produtos", + label: "Consulta de Produtos", + icon: "search", + queries: { + consulta: { + name: "Consulta de Produtos", + display: { + type: "list", + search_bar: { + placeholder: "Digite o nome do produto", + }, + rows: { + title: "title", + code: "code", + }, + }, + params: ["nome_produto"], + }, + }, + entrypoint: "consulta", + }) + .withImplementations({ + C5: { + consulta: (args) => { + return { + sql: /*sql*/ ` +select --mpc.codacesso, + pro.seqproduto, + Upper(NVL(PRODIMAG.DESCRICAO,PRO.DESCCOMPLETA)) Descricao, + Upper(pro.desccompleta) Pesquisa, + coalesce(mapi.urlecommerceimg, '') IMAGEMURL, + NVL(cpa.seqcategoria,0) CATEGORIAID, + NVL(cpa.categoria,'SEM CATEGORIA') CATEGORIADESC + from map_produto pro + + /* inner join map_prodcodigo mpc + on mpc.seqfamilia = pro.seqfamilia + and mpc.seqproduto = pro.seqproduto + AND mpc.tipcodigo = 'E' + and mpc.indutilvenda = 'S'*/ + + left join map_produtoimagem mapi + on mapi.seqproduto = pro.seqproduto + and mapi.indpricipal = 'S' + + LEFT JOIN CONSINCO.GMGB_VW_MOBILE_PRODIMAGE PRODIMAG + ON PRODIMAG.ID = PRO.SEQPRODUTO + + left join (select fdc.seqfamilia, fdc.seqcategoria, c.categoria + from map_famdivcateg fdc + inner join consinco.map_categoria c + on fdc.seqcategoria = c.seqcategoria + and fdc.nrodivisao = c.nrodivisao + where c.nrodivisao = 2 + and c.categoria not in (' A CLASSIFICAR','ATIVO FIXO','ALMOXARIFADO','LANCHONETE','SERVI OS') + and c.nivelhierarquia = 1 + and c.statuscategor = 'A' + and c.tipcategoria = 'M' + and fdc.status = 'A' + and Descricao = ${args.nome_produto} + ) cpa + on cpa.seqfamilia = pro.seqfamilia`, + }; + }, + }, + }); From a669d0f1b9b7b742be18c4a4483acd891fc2acec Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 27 Feb 2026 08:11:22 -0300 Subject: [PATCH 2/3] fix sql --- src/products/products.module.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 798aa62..38e3f59 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -31,9 +31,9 @@ export default moduleFactory consulta: (args) => { return { sql: /*sql*/ ` -select --mpc.codacesso, +select --mpc.codacesso as code, pro.seqproduto, - Upper(NVL(PRODIMAG.DESCRICAO,PRO.DESCCOMPLETA)) Descricao, + Upper(NVL(PRODIMAG.DESCRICAO,PRO.DESCCOMPLETA)) title, Upper(pro.desccompleta) Pesquisa, coalesce(mapi.urlecommerceimg, '') IMAGEMURL, NVL(cpa.seqcategoria,0) CATEGORIAID, @@ -64,7 +64,7 @@ select --mpc.codacesso, and c.statuscategor = 'A' and c.tipcategoria = 'M' and fdc.status = 'A' - and Descricao = ${args.nome_produto} + and title = ${args.nome_produto} ) cpa on cpa.seqfamilia = pro.seqfamilia`, }; From 766319ca044fa69af754a00c0da0a4172f11a06e Mon Sep 17 00:00:00 2001 From: tkinaba Date: Fri, 27 Feb 2026 12:09:46 -0300 Subject: [PATCH 3/3] chore: bump jeff version v1.0.5 --- package-lock.json | 68 +++++++++++++++++++++++++++-------------------- package.json | 10 +++---- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index e36ac32..bd02195 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,20 +9,21 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.3" + "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.5" }, "devDependencies": { "tsx": "^4.21.0" } }, "node_modules/@davinti/jeff": { - "version": "1.0.3", - "resolved": "git+https://git.davinti.com.br/davinTI/jeff.git#e695ec9c6e817e10df95708cf8427df3e03db2df", + "version": "1.0.5", + "resolved": "git+https://git.davinti.com.br/davinTI/jeff.git#de72040736f1459809722c87d602185ae470fb76", "license": "ISC", "dependencies": { "@types/glob": "^8.1.0", "commander": "^14.0.3", "glob": "^13.0.2", + "jiti": "^2.6.1", "reflect-metadata": "^0.2.2", "zod": "^4.3.6" }, @@ -489,33 +490,33 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "25.3.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.2.tgz", + "integrity": "sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" } }, "node_modules/balanced-match": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", - "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "license": "MIT", "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" } }, "node_modules/brace-expansion": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", - "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" } }, "node_modules/commander": { @@ -598,22 +599,31 @@ } }, "node_modules/glob": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.5.tgz", - "integrity": "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/lru-cache": { "version": "11.2.6", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", @@ -624,15 +634,15 @@ } }, "node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -648,16 +658,16 @@ } }, "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" diff --git a/package.json b/package.json index 368f46a..38e5cfc 100644 --- a/package.json +++ b/package.json @@ -3,16 +3,16 @@ "version": "1.0.0", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "generate": "tsx ./node_modules/.bin/jeff generate -i \"src/**/*.module.ts\"", - "generate:output": "tsx ./node_modules/.bin/jeff generate -i \"src/**/*.module.ts\" -o dist/manifest.json", - "vet": "tsx ./node_modules/.bin/jeff vet -i \"src/**/*.module.ts\"", - "jeff": "tsx ./node_modules/.bin/jeff" + "generate": "jeff generate -i \"src/**/*.module.ts\"", + "generate:output": "jeff generate -i \"src/**/*.module.ts\" -o dist/manifest.json", + "vet": "jeff vet -i \"src/**/*.module.ts\"", + "jeff": "jeff" }, "author": "", "license": "ISC", "description": "", "dependencies": { - "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.3" + "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.5" }, "devDependencies": { "tsx": "^4.21.0"