Skip to content

Tag-icone-mini.png Totali PoS‏

  1. Fórmulas - Totali PoS
  2. Totali POS

Objetivo e Considerações ​

*Documentar modelo de fórmulas utilizadas pelo Totali POS.
*As fórmulas abaixo são sugestões, algumas foram validadas nos clientes outras não.
*Mantenha esse artigo atualizado, isso nos ajudará na criação e aplicação das fórmulas de forma rápida e segura.
*Valide as fórmulas internamente. Antes de aplicar para todas as estações de trabalho do cliente, valide em uma máquina.
*Esse artigo é de uso interno, portanto não pode ser publicado ou repassado.

Tags ​

<n> - Liga Negrito

</n> - Desliga Negrito

- Liga Sublinhado

- Desliga Sublinhado

<c> - Liga Condensado

</c> - Desliga Condensado

- Liga Italico

- Desliga Italico

</fn> - Fonte Normal

</fa> - Liga Fonte Tipo A (normal)

</fb> - Liga Fonte Tipo B (condensada)

<in> - Liga Fonte Invertida (Fundo Preto)

</in> - Desliga Fonte Invertida

</ae> - Liga Alinhamento a Esquerda

</ce> - Liga Alinhamento ao Centro

</ad> - Liga Alinhamento a Direita

</linha_simples> - Imprime Linha Simples

</linha_dupla> - Imprime Linha Dupla

</logo> - Imprime Logotipo já gravado na Impressora (use utilitário do fabricante)

</corte_parcial> - Efetua Corte Parcial no Papel (não disponivel em alguns modelos)

</corte_total> - Efetua Corte Total no papel

</abre_gaveta> - Aciona a abertura da Gaveta de Dinheiro

</beep> - Emite um Beep na Impressora (não disponivel em alguns modelos)

</zera> - Reseta as configurações de Fonte Alinhamento.

</cr> - Retorna para o Inicio da Linha

<ad> - Bloco - Texto Alinhado a Direita

<ae> - Bloco - Texto Alinhado a Esquerda

<ce> - Bloco - Texto Centralizado

<ean8> - Bloco - Cod.Barras EAN8 - 7 numeros e 1 dig.verificador

<ean13> - Bloco - Cod.Barras EAN13 - 12 numeros e 1 dig.verificador

<std> - Bloco - Cod.Barras "Standard 2 of 5" - apenas números, tamanho livre

<inter> - Bloco - Cod.Barras "Interleaved 2 of 5" - apenas números, tamanho PAR

<code11> - Bloco - Cod.Barras Code11 - apenas números, tamanho livre

<code39> - Bloco - Cod.Barras Code39 - Aceita: 0..9,A..Z, ,$,%,*,+,-,.,/, tamanho livre

<code93> - Bloco - Cod.Barras Code93 - Aceita: 0..9,A..Z,-,., ,$,/,+,%, tamanho livre

<code128> - Bloco - Cod.Barras Code128 - Todos os caracteres ASCII, tamanho livre

<upca> - Bloco - Cod.Barras UPCA - 11 numeros e 1 dig.verificador

<codabar> - Bloco - Cod.Barras CodaBar - Aceita: 0..9,A..D,a..d,$,+,-,.,/,:, tamanho livre

<msi> - Bloco - Cod.Barra MSI - Apenas números, 1 dígito verificador

<code128a> - Bloco - Cod.Barras Code128 - Subtipo A

<code128b> - Bloco - Cod.Barras Code128 - Subtipo B (padrão) = <code128>

<code128c> - Bloco - Cod.Barras Code128 - Subtipo C (informar valores em BCD)

<qrcode> - Bloco - Imprime QRCode de acordo com "ConfigQRCode"

<ignorar_tags> - Bloco - Ignora todas as Tags contidas no Bloco

Fórmulas ​

Desconto no Item ​

SELECT Trunc(i.DocIte_ValorTotal *-.1,2) FROM Documento d INNER JOIN DocumentoItem i ON i.Doc_Id = d.Doc_Id INNER JOIN Transacao t ON t.Trn_Id = d.Doc_TrnId INNER JOIN participante p ON p.Par_Id = t.Trn_ParId INNER JOIN usuario u ON u.usu_parid = p.Par_Id WHERE i.Doc_Id = $1 AND i.DocIte_Id = $2

Desconto na Venda ​

Desconto por Quantidade e Classe ​

SELECT Trunc( SUM(i.DocIte_Quantidade/2) ) * 50.00 AS Valor FROM Documento d INNER JOIN DocumentoItem i ON i.Doc_id = d.Doc_id INNER JOIN Produto p ON p.Pro_Id = i.DocIte_ProId INNER JOIN Classe1 c ON c.Cl1_Id = p.Pro_Cl1Id WHERE d.Doc_TrnId = $1 AND i.DocIte_Situacao = ''''N'''' AND c.Cl1_Nome = ''''BOMBAS'''' AND i.DocIte_PromoId IS NULL AND p.Pro_Preco > 500 AND i.DocIte_Desconto = 0

Desconto por Quantidade e Fidelização ​

SELECT CASE WHEN SUM(DocIte_Quantidade) > 9 THEN SUM(DocIte_ValorTotal) * 0.30 WHEN SUM(DocIte_Quantidade) > 4 THEN SUM(DocIte_ValorTotal) * 0.20 WHEN SUM(DocIte_Quantidade) > 2 THEN SUM(DocIte_ValorTotal) * 0.10 END FROM Documento d INNER JOIN DocumentoItem i ON i.Doc_Id = d.Doc_Id INNER JOIN Transacao t ON t.Trn_Id = d.Doc_TrnId INNER JOIN Participante p ON p.Par_Id = t.Trn_ParId INNER JOIN Fidelizacao f ON f.Fid_Id = p.Par_FidelizacaoId WHERE i.DocIte_Situacao = 'N' AND Fid_Nome = 'VIP' AND d.Doc_TrnId = $1

Descrição do Produto ​

Referência Básica na Descrição ​

SELECT pro_nome||' ('||pro_referenciabasica||')' AS pro_nome FROM Produto INNER JOIN DocumentoItem ON Produto.Pro_Id = DocumentoItem.Docite_ProId INNER JOIN Documento ON DocumentoItem.Doc_Id = Documento.Doc_Id WHERE DocumentoItem.Doc_id = $1 AND DocumentoItem.Docite_id = $2

Bônus de Cliente ​

SELECT CASE WHEN COALESCE( Par_FidelizacaoId, 1 ) = 1 THEN 0.00 ELSE Trn_Valor * Fid_Percentual / 100 END FROM transacao INNER JOIN Participante ON Par_id = Trn_ParId LEFT JOIN Fidelizacao ON Fid_Id = Par_FidelizacaoId WHERE Trn_Id = $1

Rodapé do Cupom ​

Não esqueça de incluir na sua fórmula a tag <BARRAS> do cupom fiscal.

Operador e Vendedor ​

SELECT CAST('OPERADOR:' || u.usu_apelido || CASE WHEN v.vendedores IS NULL THEN '' WHEN POSITION( '/' IN v.vendedores ) = 0 THEN ' - VENDEDOR:' || v.Vendedores ELSE ' - VENDEDORES:' || v.Vendedores END AS VARCHAR(254) ) || '|<BARRAS>' AS linha FROM transacao t INNER JOIN usuario u ON u.usu_id = t.trn_usuid INNER JOIN documento d ON d.doc_TrnId = t.trn_id, (SELECT string_agg( Vendedor,'/' ) AS Vendedores FROM (SELECT REPLACE(U.Usu_Apelido,'/','-') AS vendedor FROM Documento D INNER JOIN Usuario U ON U.Usu_id = D.Vdd_id WHERE D.Doc_Trnid = $1 UNION SELECT REPLACE(U.Usu_Apelido,'/','-') FROM Documento D INNER JOIN DocumentoItem I ON I.Doc_Id = D.Doc_Id INNER JOIN Usuario U ON U.Usu_id = I.DocIte_VddId WHERE D.Doc_Trnid = $1 ) INT) v WHERE t.trn_id = $1

Quantidade de Itens Vendidos ​

SELECT 'Total de Itens: '||TRIM(to_char(SUM(DocumentoItem.DocIte_quantidadeembalagem),'99999999')) FROM Transacao INNER JOIN Documento ON Transacao.Trn_ID = Documento.Doc_TrnId INNER JOIN DocumentoItem ON DocumentoItem.Doc_Id = Documento.Doc_Id WHERE Transacao.Trn_id=$1 AND DocumentoItem.DocIte_Situacao<>'C'

Informações para Consumidor ​

SELECT '<LF>' 'OS PRODUTOS ACIMA DISCRIMINADOS PODEM SER TROCADOS NO PRAZO DE' || '<LF>' '30 DIAS A CONTAR DA DATA DE COMPRA, EXIGINDO APRESENTAÇÃO DE' || '<LF>' 'DOCUMENTO FISCAL E ETIQUETA DO PRODUTO SEM VIOLAÇÃO.' '<LF>' '<LF>' '<BARRAS>' FROM Transacao INNER JOIN Documento ON Transacao.Trn_ID = Documento.Doc_TrnId INNER JOIN DocumentoItem ON DocumentoItem.Doc_Id = Documento.Doc_Id WHERE Transacao.Trn_id=$1 AND DocumentoItem.DocIte_Situacao<>'C'

Observação Padrão da NF ​

SELECT 'Total de Itens: '||TRIM(to_char(SUM(DocumentoItem.DocIte_quantidadeembalagem),'99999999')) FROM Transacao INNER JOIN Documento ON Transacao.Trn_ID = Documento.Doc_TrnId INNER JOIN DocumentoItem ON DocumentoItem.Doc_Id = Documento.Doc_Id WHERE Transacao.Trn_id=$1 AND DocumentoItem.DocIte_Situacao<>'C'

Exemplo de Observação Fiscal para produtos com redução, diferimento e substituído ​

SELECT REPLACE(REPLACE(REPLACE(REPLACE( CAST(array_agg(tab.TXTOBS) AS VARCHAR(4000)) ,'"', '') ,'{', '') ,'}', '') ,'>,', '>') FROM ( SELECT CASE WHEN substr(DocumentoItem.docite_cst_icms, 2,2)='20'AND DocumentoItem.docite_aliquotareducao = 48.24 THEN 'BASE DE CALC. RED. CFE. LIVRO I, ART 23, INC XIII, DEC 37.699/97 - RICMS/RS.' WHEN substr(DocumentoItem.docite_cst_icms, 2,2)='20'AND DocumentoItem.docite_aliquotareducao = 80.00 THEN 'BASE DE CALC. RED. CFE. LIVRO I, ART 23, INC I, DEC 37.699/97 - RICMS/RS.' WHEN substr(DocumentoItem.docite_cst_icms, 2,2)='20'AND DocumentoItem.docite_aliquotareducao = 41.67 THEN 'BASE DE CALC. RED. CFE. LIVRO I, ART 23, INC I, DEC 37.699/97 - RICMS/RS.' WHEN substr(DocumentoItem.docite_cst_icms, 2,2)='20'AND DocumentoItem.docite_aliquotareducao = 58.82 THEN 'BASE DE CALC. RED. CFE. LIVRO I, ART 23, INC II E III, DEC 37.699/97 - RICMS/RS.' WHEN substr(DocumentoItem.docite_cst_icms, 2,2)='51' THEN 'DIFERIMENTO PARCIAL CONFORME LIVRO III, ARTIGO 1° K. DO RICMS/RS DECRETO 37699/97.' WHEN substr(DocumentoItem.docite_cst_icms, 2,2)='60' THEN 'IMPOSTO RETIDO ANTERIORMENTE P/SBUST. TRIBUTÁRIA CFE. PROT. ICMS DE 23 DE JULHO DE 2009.' ELSE '' END AS TXTOBS --, --DocumentoItem.* FROM Transacao INNER JOIN Documento ON Transacao.Trn_ID = Documento.Doc_TrnId INNER JOIN DocumentoItem ON DocumentoItem.Doc_Id = Documento.Doc_Id WHERE Transacao.Trn_id=$1 AND DocumentoItem.DocIte_Situacao<>'C' GROUP BY DocumentoItem.docite_cst_icms, DocumentoItem.docite_aliquotareducao, DocumentoItem.docite_codigobeneficiofiscal ) TAB ;

Update da Tabela de Preços ​

UPDATE serie SET ser_ativa = FALSE WHERE ser_modelo = '55';   UPDATE serie SET ser_ativa = TRUE WHERE ser_modelo = '55' AND ser_chave = '2' AND (SELECT substr( Amb_CnpjDaInstalacao,1,8) FROM ambiente) IN ('04303719','12345678');;   UPDATE serie SET ser_ativa = TRUE WHERE ser_modelo = '55' AND ser_chave = '1' AND (SELECT substr( Amb_CnpjDaInstalacao,1,8) FROM ambiente) IN ('01968595');   UPDATE TabelaPreco SET TabPre_NomeNaConsulta = CASE WHEN POSITION('VAREJO' IN TabPre_Nome) > 0 THEN 'Varejo' WHEN POSITION('ATACADO' IN TabPre_Nome) > 0 THEN 'Atacado' ELSE '' END;   SELECT 'OK';

Confissão de Dívida de Carnê ​

select 'TERMO DE CONFISSÃO DE DÍVIDA' || '<LF>' || 'Eu, ' || Par_Lista || ', portador(a) do CPF' || replace(to_char(To_Number(Par_Documento,'99999999999'), '000:000:000-00'), ':', '.') || ' domiciliado(a) no endereço: ' || End_Endereco || ', ' || End_Numero || case when coalesce(End_Complemento,'X') = 'X' then ' ' else ' - ' || End_Complemento end || ' - BAIRRO ' || End_Bairro || ' - ' || Cid_Nome || '-' || UF_Sigla ||',' || 'abaixo assinado, declaro ser devedor(a) ' || 'da NOME EMPRESA através de contrato ' || 'de Nº ' || Par_chave || ' e após conferidos detalhadamente os cálculos de meu ' || 'débito, reconheço a exatidão dos mesmos, que perfazem ' || 'até a presente data o valor de ' || '<VALOR> (<EXTENSO>) ' || 'referente ao Documento Fiscal NFe/NFCe Nº <NOTA> de ' || to_char(Trn_Inicio, 'DD/MM/YYYY às HH24:MI:SS' ) || ' obrigando-me a efetuar o pagamento das parcelas ' || 'negociadas e aqui contratadas, que são as seguintes:' || '<LF>' || '<PARCELAS>' '<LF>' || 'Obrigando-me a efetuar o pagamento das parcelas ' || 'até o dia do vencimento, em estabelecimentos da ' || 'Credora, ou onde ela indicar; à falta de ' || 'pagamento de quaisquer umas das parcelas no ' || 'respectivo vencimento, produzirá o vencimento ' || 'imediato e antecipado do saldo, dando à Credora, ' || 'pleno direito de proceder à Cobrança Judicial.' || '<LF>' || Cid_Nome || '-' || UF_Sigla || '<LF>' || '<LF>' || '______________________________________' '<LF>'|| 'Assinatura do Cliente' '<LF>' as Texto from transacao left join Cupom on Cup_Id = Trn_CupId left join Documento on Doc_TrnId = Trn_Id left join Participante p on p.Par_Id = Trn_ParId left join Endereco e on e.Par_Id = EndFat_ParId and End_Id = EndFat_Id left join Cidade c on Cid_Id = End_CidId left join UnidadeFederativa UF on Uf_Id = Cid_UfId left join categoria1 on ct1_id = Par_Ct1Id
where Trn_id = $1 and Par_TipoPessoa = 0 and ct1_Nome <> 'FUNCIONARIO'

Nota Promissória de Parcela de Carnê ​

SELECT '<ce><n>NOTA PROMISSÓRIA</n></ce>' || '<LF>' 'Venda <NOTA>, parcela <NUMERO><LF>Vencimento , no valor de <VALOR>.<LF>Pagarei por esta única via de NOTA PROMISSÓRIA ' || 'a RAZAO SOCIAL, inscrito no CNPJ/MF 00.000.000/0000-00 e ' || 'Inscrição Estadual 000.000.000-0' || ' ou à sua ordem a quantia de: ' || '(<EXTENSO>)' || ' em moeda corrente deste país, pagável em ' || Cid_Nome || '-' || UF_Sigla || '<LF>' 'Data da emissão: ' || to_char(Trn_Inicio, 'DD/MM/YYYY às HH24:MI:SS' ) || '<LF>' 'Nome do Funcionário: ' || Par_Lista || ', CPF: ' || replace(to_char(To_Number('0'||Par_Documento,'99999999999'),'000:000:000-00'), ':', '.') || ' Endereço: ' || End_Endereco || ', ' || End_Numero || case when coalesce(End_Complemento,) = then * else ' - ' || End_Complemento* end || ' - BAIRRO ' || End_Bairro || ' - ' || Cid_Nome || '-' || UF_Sigla ||'.'|| '<LF><ce>' '____________________________________<LF>' || 'Assinatura do Funcionário</ce>' as Texto from transacao left join Cupom on Cup_Id = Trn_CupId left join Documento on Doc_TrnId = Trn_Id left join Participante p on p.Par_Id = Trn_ParId
left join Endereco e on e.Par_Id = EndFat_ParId and End_Id = EndFat_Id left join Cidade c on Cid_Id = End_CidId left join UnidadeFederativa UF on Uf_Id = Cid_UfId left join categoria1 on ct1_id = Par_Ct1Id where Trn_id = $1 and Par_TipoPessoa = 0 and ct1_Nome = 'FUNCIONARIO'

Referenciado por: Fórmulas - Totali PoS | Totali POS |