Autor Tópico: ** RESOLVIDO **Imprimir etiquetas conforme quantidade em estoque  (Lida 2238 vezes)

helderpirapora

  • Iniciante
  • **
  • Mensagens: 72
    • Email
** RESOLVIDO **Imprimir etiquetas conforme quantidade em estoque
« Online: Maio 08, 2013, 10:52:03 am »
Bom dia a todos!

Tem como imprimir etiquetas de acordo com a quantidade em estoque?

Exemplo;

produto 01.0001 tem 20 em estoque e o 01.0002 tem 15

imprimir as 20 do 01.0001 e na sequencia imprimir as 15 do 01.0002

Agradeço desde já
« Última modificação: Maio 09, 2013, 04:54:16 pm por helderpirapora »

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Imprimir etiquetas conforme quantidade em estoque
« Responder #1 Online: Maio 08, 2013, 10:58:38 am »
Tem sim, é só criar uma lógica que antes de gerar as etiquetas ele busque através de um "Select" o produto, passando como parâmetro a quantidade em estoque para a geração (quantidade) de etiquetas. Pra isso você tem que estudar um laço em cima das informações (campos) da tabela de produtos. Colocar isso em um botão RUM chamando o relatório!
F. A.
Analista de Sistemas

helderpirapora

  • Iniciante
  • **
  • Mensagens: 72
    • Email
Re:Imprimir etiquetas conforme quantidade em estoque
« Responder #2 Online: Maio 08, 2013, 11:58:07 am »
Tem como me ajudar postando um exemplo?

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Imprimir etiquetas conforme quantidade em estoque
« Responder #3 Online: Maio 08, 2013, 04:45:49 pm »
Preciso saber como esta sua tabela no BD...  pra poder montar um select, depois criar um formulário formato livre com o layout das etiquetas, não faço nada em PDFReport. Tudo em HTML.
F. A.
Analista de Sistemas

helderpirapora

  • Iniciante
  • **
  • Mensagens: 72
    • Email
Re:Imprimir etiquetas conforme quantidade em estoque
« Responder #4 Online: Maio 09, 2013, 08:51:20 am »
--
-- Estrutura da tabela `produtos`
--

CREATE TABLE IF NOT EXISTS `produtos` (
  `idprd` int(11) NOT NULL AUTO_INCREMENT,
  `codigo` varchar(7) NOT NULL,
  `descricao` varchar(50) NOT NULL,
  `codbarra` varchar(25) NOT NULL,
  `parcelamento` varchar(25) NOT NULL,
  `tamanho` varchar(5) NOT NULL,
  `numero` int(11) DEFAULT NULL,
  `precounitario` double(10,2) DEFAULT NULL,
  PRIMARY KEY (`idprd`),
  UNIQUE KEY `idprd` (`idprd`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

Preciso na etiqueta os campos, codbarra, descricao, parcelamento, tamanho e precounitario.

Agradeço desde já sua ajuda.

helderpirapora

  • Iniciante
  • **
  • Mensagens: 72
    • Email
Re:Imprimir etiquetas conforme quantidade em estoque
« Responder #5 Online: Maio 09, 2013, 11:03:04 am »
Resolvi criar uma segunda tabela em tempo de execução tendo como parametro na inserção a quantidade em estoque, dai poderei imprimir as etiquetas normalmente, porém so ta pegando o primeiro registro, se alguem puder me ajudar segue o codigo:

//apaga a tabela caso ela exista
sc_exec_sql("DROP TABLE IF EXISTS produtoscbarra");

//recria a tabela
sc_exec_sql("CREATE TABLE IF NOT EXISTS produtoscbarra (
  idprd int(11) NOT NULL AUTO_INCREMENT,
  codigo varchar(7) NOT NULL,
  descricao varchar(50) NOT NULL,
  unidade varchar(5) NOT NULL,
  precounitario double(10,2) DEFAULT NULL,
  quantidade int(11) DEFAULT NULL,
  codbarra varchar(25) NOT NULL,
  parcelamento varchar(25) NOT NULL,
  tamanho varchar(5) NOT NULL,
  prateleira varchar(3) DEFAULT NULL,
  armario int(11) DEFAULT NULL,
  numero int(11) DEFAULT NULL,
  PRIMARY KEY (idprd),
  UNIQUE KEY idprd (idprd)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;");

//seleciona os registros para inserção na nova tabela      
sc_lookup (dataset,"SELECT idprd, codigo, descricao, unidade, precounitario,
                   quantidade, codbarra, parcelamento, tamanho,
                   prateleira, armario, numero FROM produtos
            WHERE quantidade > 0");   
//if (isset({dataset[0][0]}))// Row found
//   {
// faz a contagem dos registros da tabela e guarda numa variavel
sc_lookup(dtset, "SELECT COUNT(*) FROM PRODUTOS WHERE quantidade > 0");
$numreg = {dtset[0][0]};
$j = 0;
while    ($j <= $numreg) {
        //$id = {dataset[0][0]};       
        $cod = {dataset[0][1]};
        $desc = {dataset[0][2]};
        $unid = {dataset[0][3]};
        $preco = {dataset[0][4]};
        $quant = {dataset[0][5]};
        $cbarra = {dataset[0][6]};
        $parc = {dataset[0][7]};
        $tam = {dataset[0][8]};
        $prat = {dataset[0][9]};
        $arm = {dataset[0][10]};
        $num = {dataset[0][11]};
        $i = 1;   
        if ($quant > 1) {
          while ($i <= $quant) {
                 sc_exec_sql("INSERT INTO produtoscbarra(codigo,descricao,unidade,precounitario,quantidade,codbarra,
                     parcelamento,tamanho,prateleira,armario,numero)
                     VALUES ('$cod', '$desc','$unid','$preco', '$quant','$cbarra',
                     '$parc','$tam','$prat','$arm','$num')");      
                  $i++;
              }
         }
         sc_exec_sql("INSERT INTO produtoscbarra(codigo,descricao,unidade,precounitario,quantidade,codbarra,
            parcelamento,tamanho,prateleira,armario,numero)
            VALUES ('$cod', '$desc','$unid','$preco', '$quant','$cbarra',
                     '$parc','$tam','$prat','$arm','$num')");      
            $j++;
        }
//}

helderpirapora

  • Iniciante
  • **
  • Mensagens: 72
    • Email
Re:Imprimir etiquetas conforme quantidade em estoque
« Responder #6 Online: Maio 09, 2013, 11:28:47 am »
em partes descobri a falha : basta alterar onde tiver {dataset[0]
  • } para {dataset[$j]
  • }, porem ainda aparece um erro


ERRO
Undefined offset: 8

mas ta funcionando legal todos os registros foram repetidos de acordo com a quantidade. To fuçando.

helderpirapora

  • Iniciante
  • **
  • Mensagens: 72
    • Email
Re:Imprimir etiquetas conforme quantidade em estoque
« Responder #7 Online: Maio 09, 2013, 11:59:58 am »
Passei para postar o codigo ja corrigido, porém ainda permanece esse aviso ao abrir a grid, lembrando que este código está dentro do evento applicationinit.
ERRO
Undefined offset: 8

se alguem souber alguma forma de pelo menos suprimir esta mensagem ao abrir a grid, pois quando avança a página o mesmo desaparece.


//apaga a tabela caso ela exista
sc_exec_sql("DROP TABLE IF EXISTS produtoscbarra");

//recria a tabela
sc_exec_sql("CREATE TABLE IF NOT EXISTS produtoscbarra (
  idprd int(11) NOT NULL AUTO_INCREMENT,
  codigo varchar(7) NOT NULL,
  descricao varchar(50) NOT NULL,
  unidade varchar(5) NOT NULL,
  precounitario double(10,2) DEFAULT NULL,
  quantidade int(11) DEFAULT NULL,
  codbarra varchar(25) NOT NULL,
  parcelamento varchar(25) NOT NULL,
  tamanho varchar(5) NOT NULL,
  prateleira varchar(3) DEFAULT NULL,
  armario int(11) DEFAULT NULL,
  numero int(11) DEFAULT NULL,
  PRIMARY KEY (idprd),
  UNIQUE KEY idprd (idprd)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;");

//seleciona os registros para inserção na nova tabela      
sc_lookup (dataset,"SELECT idprd, codigo, descricao, unidade, precounitario,
                   quantidade, codbarra, parcelamento, tamanho,
                   prateleira, armario, numero FROM produtos
            WHERE quantidade > 0");   
// faz a contagem dos registros da tabela e guarda numa variavel
sc_lookup(dtset, "SELECT COUNT(*) FROM PRODUTOS WHERE quantidade > 0");
$numreg = {dtset[0][0]};
$j = 0;
while    ($j <= $numreg)
   {
        $id = {dataset[$j][0]};       
        $cod = {dataset[$j][1]};
        $desc = {dataset[$j][2]};
        $unid = {dataset[$j][3]};
        $preco = {dataset[$j][4]};
        $quant = {dataset[$j][5]};
        $cbarra = {dataset[$j][6]};
        $parc = {dataset[$j][7]};
        $tam = {dataset[$j][8]};
        $prat = {dataset[$j][9]};
        $arm = {dataset[$j][10]};
        $num = {dataset[$j][11]};
        $i = 1;   
        if ($quant > 1)
         {
          while ($i <= $quant)
              {
                 sc_exec_sql("INSERT INTO produtoscbarra(codigo,descricao,unidade,precounitario,quantidade,codbarra,
                     parcelamento,tamanho,prateleira,armario,numero)
                     VALUES ('$cod', '$desc','$unid','$preco', '$quant','$cbarra',
                     '$parc','$tam','$prat','$arm','$num')");      
                  $i++;
              }
         }
       else {
         sc_exec_sql("INSERT INTO produtoscbarra(codigo,descricao,unidade,precounitario,quantidade,codbarra,
            parcelamento,tamanho,prateleira,armario,numero)
            VALUES ('$cod', '$desc','$unid','$preco', '$quant','$cbarra',
                     '$parc','$tam','$prat','$arm','$num')");                 
        }
   $j++;
}

helderpirapora

  • Iniciante
  • **
  • Mensagens: 72
    • Email
Re:** RESOLVIDO **Imprimir etiquetas conforme quantidade em estoque
« Responder #8 Online: Maio 09, 2013, 04:57:39 pm »
Boa tarde gente,

Para resolver, criei um report pdf de etiquetas e configurei certinho de acordo com o formulario, coloquei o código acima dentro do evento OnApplicationInit e boas.

Obrigado a todos.