Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
dashboard criacao estou com esse codigo de criação de dashboard relacionado a visualização de chamados abertos onde tem um campo da tabela chamado zb7_projet fica os projetos ou como conhecidos para que aquele chamado está sendo aberto com isso criamos essa pág. de dashboard adicionei um filtro do projeto onde ele vai no banco e vê os dados relacionado as data de e ate e o projeto que quero porem qual a pri...
JL
dashboard criacao  
estou com esse codigo de criação de dashboard relacionado a visualização de chamados abertos onde tem um campo da tabela chamado zb7_projet fica os projetos ou como conhecidos para que aquele chamado está sendo aberto com isso criamos essa pág. de dashboard adicionei um filtro do projeto onde ele vai no banco e vê os dados relacionado as data de e ate e o projeto que quero porem qual a principal problemática

no primeiro indicador onde temos o seguinte trecho de codigo
  1. <?php
  2. $indicator1->enableSection('main', [
  3.             'title'      => 'Total Geral Armazenado',
  4.             'icon'       => 'fas fa-envelope',
  5.             'background' => 'green',
  6.             'value'      => Zb7010::count()
  7.         ]);
  8. ?>

coloquei o zb7010 e ele me retorna o numero total de todos os chamados meu pensamento era de que a partir do momento que consulta se o dashboard o valor fosse filtrado para somente o do projeto em especifico irei mandar como está a tabela , (também sou novo com o framework)ou seja diferentemente como está agora que filtra o total de chamados da tabela, queria que ele filtra se através do projeto escolhido onde se o usuário escolheu suporte vai me retornar todos os chamados do suporte e assim suscetivelmente queria uma luz em relação a isso

minha tabela onde o projet tem valor null por que no meu framework tem uma variável onde quando abrimos um chamado ele ja vai com uma string dizendo qual e o projeto do chamado onde tbm vou passar essa array

  1. <?php
  2. namespace Adianti\Util;
  3. use stdClass;
  4. class AdiantiVariaveisSistema
  5. {
  6.     static function listaProjetosChamados()
  7.     {
  8.         $array = array();
  9.         $array['01'] = 'Equipamentos de TI (próprios)';
  10.         $array['02'] = 'Equipamentos de TI (Terceiros)';
  11.         $array['03'] = 'Compra de Equipamentos';
  12.         $array['04'] = 'Sistema Protheus - TOTVS';
  13.         $array['05'] = 'Email Corporativo';
  14.         $array['06'] = 'Internet';
  15.         $array['07'] = 'Aplicativo de Terceiros';
  16.         $array['08'] = 'Sistema Giros';
  17.         $array['09'] = 'Infraestrutura';
  18.         $array['10'] = 'Atendimento Auditoria';
  19.         $array['11'] = 'Servidor de Arquivos';
  20.         $array['12'] = 'Atendimento DAD';
  21.         
  22.         return $array;
  23.     }
  24. ?>



(tabela sql que uso para armazena os chamados tecnicos solcitados)


ZB7_FILIAL varchar 15 ZB7_DOC varchar 50 ZB7_DATA date NULL ZB7_HORA time NULL ZB7_USUARI varchar 50 ZB7_TITULO text 2147483647 ZB7_DESCRI text 2147483647 ZB7_PROJET int NULL ZB7_CATEGO int NULL ZB7_PRIORI char 1 ZB7_STATUS char 2 ZB7_CHAPA varchar 50 ZB7_FILORI varchar 15 D_E_L_E_T_ char 1 R_E_C_N_O_ int NULL R_E_C_D_E_L_ char 1




  1. <?php
  2. use Adianti\Control\TAction;
  3. use Adianti\Control\TPage;
  4. use Adianti\Control\TWindow;
  5. use Adianti\Core\AdiantiCoreApplication;
  6. use Adianti\Core\AdiantiCoreTranslator;
  7. use Adianti\Database\TCriteria;
  8. use Adianti\Database\TFilter;
  9. use Adianti\Database\TRepository;
  10. use Adianti\Database\TTransaction;
  11. use Adianti\Registry\TSession;
  12. use Adianti\Util\AdiantiFuncoesSistema;
  13. use Adianti\Util\AdiantiVariaveisSistema;
  14. use Adianti\Widget\Base\TElement;
  15. use Adianti\Widget\Container\TPanelGroup;
  16. use Adianti\Widget\Container\TVBox;
  17. use Adianti\Widget\Datagrid\TDataGrid;
  18. use Adianti\Widget\Datagrid\TDataGridAction;
  19. use Adianti\Widget\Datagrid\TDataGridColumn;
  20. use Adianti\Widget\Datagrid\TPageNavigation;
  21. use Adianti\Widget\Dialog\TMessage;
  22. use Adianti\Widget\Dialog\TQuestion;
  23. use Adianti\Widget\Form\TCombo;
  24. use Adianti\Widget\Form\TDate;
  25. use Adianti\Widget\Form\TEntry;
  26. use Adianti\Widget\Form\TLabel;
  27. use Adianti\Widget\Form\TMultiSearch;
  28. use Adianti\Widget\Util\TXMLBreadCrumb;
  29. use Adianti\Wrapper\BootstrapDatagridWrapper;
  30. use Adianti\Wrapper\BootstrapFormBuilder;
  31. use Adianti\Widget\Template\THtmlRenderer;
  32. /**
  33.  * ChamadosDashboardView
  34.  *
  35.  * @version    3.0
  36.  * @package    giros-plus
  37.  * @author     Josivaldo Barbosa
  38.  */
  39. class ChamadosDashboardView extends TPage
  40. {
  41.     use Adianti\base\AdiantiStandardListTrait;
  42.     /**
  43.      * Class constructor
  44.      * Creates the page
  45.      */
  46.     function __construct()
  47.     {
  48.         parent::__construct();
  49.         $this->addFilterField('ZB7_DATA''>=''ZB7_DATA_DE'); // filterField, operator, formField
  50.         $this->addFilterField('ZB7_DATA''<=''ZB7_DATA_ATE'); // filterField, operator, formField
  51.         $this->addFilterField('ZB7_PROJET''=''ZB7_PROJET'); // filterField, operator, formField
  52.         $this->form = new BootstrapFormBuilder('form_dashboard_Zb7010');
  53.         $this->form->setFormTitle('Parâmetros');
  54.         $ZB7_DATA_DE  = new TDate('ZB7_DATA_DE');
  55.         $ZB7_DATA_ATE = new TDate('ZB7_DATA_ATE');
  56.         $ZB7_PROJET = new TCombo('ZB7_PROJET');
  57.         $ZB7_DATA_DE->setDatabaseMask('yyyymmdd');
  58.         $ZB7_DATA_DE->setMask('dd/mm/yyyy');
  59.         $ZB7_DATA_ATE->setDatabaseMask('yyyymmdd');
  60.         $ZB7_DATA_ATE->setMask('dd/mm/yyyy');
  61.         //$ZB7_DATA_DE->addValidation('Realizado De', new TRequiredValidator);
  62.         //$ZB7_DATA_ATE->addValidation('Realizado Até', new TRequiredValidator);
  63.         $ZB7_PROJET->addItems(AdiantiVariaveisSistema::listaProjetosChamados());
  64.         $this->form->addFields(
  65.             [new TLabel('Realizado De')],
  66.             [$ZB7_DATA_DE],
  67.             [new TLabel('Realizado Até')],
  68.             [$ZB7_DATA_ATE,]
  69.         );
  70.         $this->form->addFields([new TLabel('projeto')], [$ZB7_PROJET]);
  71.         $this->form->setData(TSession::getValue(__CLASS__ '_filter_data'));
  72.         $this->form->addExpandButton('Expandir');
  73.         $btn $this->form->addAction('Apresentar', new TAction([$this'onSearch']), 'fa:desktop');
  74.         $btn->class 'btn btn-sm btn-primary';
  75.         $vbox = new TVBox;
  76.         $vbox->style 'width: 100%';
  77.         $div = new TElement('div');
  78.         $div->class "row";
  79.         $indicator1 = new THtmlRenderer('app/resources/info-box.html');
  80.         $indicator2 = new THtmlRenderer('app/resources/info-box.html');
  81.         TTransaction::open('protheus'); // abre uma transação
  82.         $conn TTransaction::get(); // obtém a conexão
  83.         $queryAbertos TSession::getValue(__CLASS__ '_filter_Chamados_Abertos');
  84.         if (isset($queryAbertos) && $queryAbertos != NULL) {
  85.         } else {
  86.             $queryAbertos "SELECT count(*) as em_aberto from ZB7010 WHERE ZB7_STATUS <> '04' AND D_E_L_E_T_ = ''";
  87.             TSession::setValue(__CLASS__ '_filter_Chamados_Abertos'$queryAbertos);
  88.             $queryStatus "SELECT ZB7_STATUS,count(*) as total_status from ZB7010 WHERE D_E_L_E_T_ = '' GROUP BY ZB7_STATUS ORDER BY ZB7_STATUS";
  89.             TSession::setValue(__CLASS__ '_filter_Chamados_Status'$queryStatus);
  90.         }
  91.         $resultZB7Open $conn->query($queryAbertos);
  92.         $total_em_aberto 0;
  93.         foreach ($resultZB7Open as $item) {
  94.             $total_em_aberto $item['em_aberto'];
  95.         }
  96.         $indicator1->enableSection('main', [
  97.             'title'      => 'Total Geral Armazenado',
  98.             'icon'       => 'fas fa-envelope',
  99.             'background' => 'green',
  100.             'value'      => Zb7010::count()
  101.         ]);
  102.         $indicator2->enableSection('main', [
  103.             'title'      => 'Em aberto no período',
  104.             'icon'       => 'fas fa-envelope-open-text',
  105.             'background' => 'orange',
  106.             'value'      => $total_em_aberto
  107.         ]);
  108.         $div->add($i1 TElement::tag('div'$indicator1));
  109.         $div->add($i2 TElement::tag('div'$indicator2));
  110.         $queryStatus TSession::getValue(__CLASS__ '_filter_Chamados_Status');
  111.         $resultZB7Movi $conn->query($queryStatus);
  112.         $total_00 0;
  113.         $total_01 0;
  114.         $total_02 0;
  115.         $total_03 0;
  116.         $total_04 0;
  117.         $total_05 0;
  118.         foreach ($resultZB7Movi as $item) {
  119.             if ($item['ZB7_STATUS'] == '00') {
  120.                 $total_00 = (float) $item['total_status'];
  121.             } else if ($item['ZB7_STATUS'] == '01') {
  122.                 $total_01 = (float) $item['total_status'];
  123.             } else if ($item['ZB7_STATUS'] == '02') {
  124.                 $total_02 = (float) $item['total_status'];
  125.             } else if ($item['ZB7_STATUS'] == '03') {
  126.                 $total_03 = (float) $item['total_status'];
  127.             } else if ($item['ZB7_STATUS'] == '04') {
  128.                 $total_04 = (float) $item['total_status'];
  129.             } else if ($item['ZB7_STATUS'] == '05') {
  130.                 $total_05 = (float) $item['total_status'];
  131.             }
  132.         }
  133.         TTransaction::close(); // fecha a transação.
  134.         $g1 = new THtmlRenderer('app/resources/google_bar_chart.html');
  135.         $data = array();
  136.         $data[] = ['Situação''Novo''Em Atendimento''Cancelado pelo solicitante''Cancelado pelo suporte''Solucionado''Reaberto'];
  137.         $data[] = ['',   $total_00$total_01$total_02$total_03$total_04$total_05];
  138.         # PS: If you use values from database ($row['total'), 
  139.         # cast to float. Ex: (float) $row['total']
  140.         // replace the main section variables
  141.         $g1->enableSection('main', array(
  142.             'data'   => json_encode($data),
  143.             'width'  => '100%',
  144.             'height' => '300px',
  145.             'title'  => 'Quantidades por Situação',
  146.             'ytitle' => 'Situações',
  147.             'xtitle' => 'Quantidades',
  148.             'uniqid' => uniqid()
  149.         ));
  150.         $div->add($i3 TElement::tag('div'$g1));
  151.         $g2 = new THtmlRenderer('app/resources/google_column_chart.html');
  152.         $data = array();
  153.         $data[] = ['Situação''Novo''Em Atendimento''Cancelado pelo solicitante''Cancelado pelo suporte''Solucionado''Reaberto'];
  154.         $data[] = ['',   $total_00$total_01$total_02$total_03$total_04$total_05];
  155.         # PS: If you use values from database ($row['total'), 
  156.         # cast to float. Ex: (float) $row['total']
  157.         // replace the main section variables
  158.         $g2->enableSection('main', array(
  159.             'data'   => json_encode($data),
  160.             'width'  => '100%',
  161.             'height' => '300px',
  162.             'title'  => 'Quantidades por Situação',
  163.             'ytitle' => 'Quantidades',
  164.             'xtitle' => 'Situações',
  165.             'uniqid' => uniqid()
  166.         ));
  167.         $div->add($i4 TElement::tag('div'$g2));
  168.         $g3 = new THtmlRenderer('app/resources/google_pie_chart.html');
  169.         $data = array();
  170.         $data[] = ['Situação''Quantidade'];
  171.         $data[] = ['Novo'$total_00];
  172.         $data[] = ['Em Atendimento'$total_01];
  173.         $data[] = ['Cancelado pelo solicitante'$total_02];
  174.         $data[] = ['Cancelado pelo suporte'$total_03];
  175.         $data[] = ['Solucionado'$total_04];
  176.         $data[] = ['Reaberto'$total_05];
  177.         # PS: If you use values from database ($row['total'), 
  178.         # cast to float. Ex: (float) $row['total']
  179.         // replace the main section variables
  180.         $g3->enableSection('main', array(
  181.             'data'   => json_encode($data),
  182.             'width'  => '100%',
  183.             'height' => '300px',
  184.             'title'  => 'Quantidades por Situação',
  185.             'ytitle' => 'Situações',
  186.             'xtitle' => 'Quantidades',
  187.             'uniqid' => uniqid()
  188.         ));
  189.         $div->add($i5 TElement::tag('div'$g3));
  190.         $i1->class 'col-sm-6';
  191.         $i2->class 'col-sm-6';
  192.         $i3->class 'col-sm-6';
  193.         $i4->class 'col-sm-6';
  194.         $i5->class 'col-sm-6';
  195.     
  196.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  197.         $vbox->add($div);
  198.         parent::add($this->form);
  199.         parent::add($vbox);
  200.     }
  201.     /**
  202.      * Register the filter in the session
  203.      */
  204.     public function onSearch()
  205.     {
  206.         $this->form->validate(); // validate form data
  207.         // get the search form data
  208.         $data $this->form->getData();
  209.         // Verifique se a data de início e de término foram fornecidas
  210.         if (isset($data->ZB7_DATA_DE) && !empty($data->ZB7_DATA_DE) && isset($data->ZB7_DATA_ATE) && !empty($data->ZB7_DATA_ATE)) {
  211.             // Verifique se um projeto foi selecionado
  212.             if (isset($data->ZB7_PROJET) && !empty($data->ZB7_PROJET)) {
  213.                 $queryAbertos "SELECT count(*) as em_aberto 
  214.                               FROM ZB7010 
  215.                               WHERE ZB7_STATUS <> '04' 
  216.                               AND ZB7_DATA >= '" $data->ZB7_DATA_DE "' 
  217.                               AND ZB7_DATA <= '" $data->ZB7_DATA_ATE "' 
  218.                               AND ZB7_PROJET = '" $data->ZB7_PROJET "' 
  219.                               AND D_E_L_E_T_ = ''";
  220.                 $queryStatus "SELECT ZB7_STATUS, count(*) as total_status 
  221.                             FROM ZB7010 
  222.                             WHERE ZB7_DATA >= '" $data->ZB7_DATA_DE "' 
  223.                             AND ZB7_DATA <= '" $data->ZB7_DATA_ATE "' 
  224.                             AND ZB7_PROJET = '" $data->ZB7_PROJET "' 
  225.                             AND D_E_L_E_T_ = '' 
  226.                             GROUP BY ZB7_STATUS 
  227.                             ORDER BY ZB7_STATUS";
  228.             } else {
  229.                 // Se nenhum projeto for selecionado, não filtre por projeto
  230.                 $queryAbertos "SELECT count(*) as em_aberto 
  231.                               FROM ZB7010 
  232.                               WHERE ZB7_STATUS <> '04' 
  233.                               AND ZB7_DATA >= '" $data->ZB7_DATA_DE "' 
  234.                               AND ZB7_DATA <= '" $data->ZB7_DATA_ATE "' 
  235.                               AND D_E_L_E_T_ = ''";
  236.                 $queryStatus "SELECT ZB7_STATUS, count(*) as total_status 
  237.                             FROM ZB7010 
  238.                             WHERE ZB7_DATA >= '" $data->ZB7_DATA_DE "' 
  239.                             AND ZB7_DATA <= '" $data->ZB7_DATA_ATE "' 
  240.                             AND D_E_L_E_T_ = '' 
  241.                             GROUP BY ZB7_STATUS 
  242.                             ORDER BY ZB7_STATUS";
  243.             }
  244.         } else {
  245.             // Se nenhuma data for fornecida, filtre apenas por status
  246.             $queryAbertos "SELECT count(*) as em_aberto 
  247.                           FROM ZB7010 
  248.                           WHERE ZB7_STATUS <> '04' 
  249.                           AND D_E_L_E_T_ = ''";
  250.             $queryStatus "SELECT ZB7_STATUS, count(*) as total_status 
  251.                         FROM ZB7010 
  252.                         WHERE D_E_L_E_T_ = '' 
  253.                         GROUP BY ZB7_STATUS 
  254.                         ORDER BY ZB7_STATUS";
  255.         }
  256.         TSession::setValue(__CLASS__ '_filter_Chamados_Abertos'$queryAbertos);
  257.         TSession::setValue(__CLASS__ '_filter_Chamados_Status'$queryStatus);
  258.         // fill the form with data again
  259.         $this->form->setData($data);
  260.         // keep the search data in the session
  261.         TSession::setValue(__CLASS__ '_filter_data'$data);
  262.         // Redirect to the same page to refresh the dashboard
  263.         AdiantiCoreApplication::loadPage('ChamadosDashboardView');
  264.     }
  265. }
  266. fiz um codigo se perceber o zb010 ele ta sendo ligado para outra pagina devido a que tem uma ação com o meus banco 
  1. <?php
  2. use Adianti\Database\TRecord;
  3. /**
  4.  * Zb7010 Active Record
  5.  * @author  <your-name-here>
  6.  */
  7. class Zb7010 extends TRecord // CHAMADOS TÉCNICOS
  8. {
  9.     const TABLENAME 'ZB7010';
  10.     const PRIMARYKEY'R_E_C_N_O_';
  11.     const IDPOLICY =  'max'// {max, serial}
  12.     
  13.     /**
  14.      * Constructor method
  15.      */
  16.     public function __construct($id NULL$callObjectLoad TRUE)
  17.     {
  18.         parent::__construct($id$callObjectLoad);
  19.         parent::addAttribute('ZB7_FILIAL');
  20.         parent::addAttribute('ZB7_DOC');
  21.         parent::addAttribute('ZB7_DATA');
  22.         parent::addAttribute('ZB7_HORA');
  23.         parent::addAttribute('ZB7_USUARI');
  24.         parent::addAttribute('ZB7_PROJET');
  25.         parent::addAttribute('ZB7_CATEGO');
  26.         parent::addAttribute('ZB7_TITULO');
  27.         parent::addAttribute('ZB7_DESCRI');
  28.         parent::addAttribute('ZB7_PRIORI');
  29.         parent::addAttribute('ZB7_STATUS');
  30.         parent::addAttribute('ZB7_CHAPA');
  31.         parent::addAttribute('D_E_L_E_T_');
  32.         parent::addAttribute('R_E_C_D_E_L_');
  33.     }
  34. }
  35. ?>

com essa função

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (0)