Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Projeto de BPA boletim de producao ambulatorial, solicito ajuda. Eu consigo fazer carga de dados TDBSeekButton em TFieldList? vou enviar o codigo para analisarem por favor. class SaleMultiValueForm extends TPage { protected $form; // form protected $dt_venda; protected $profiss_list; protected $detail_row; /** * Class constructor * Creates the page and the registration form */ function __construct($param...
IS
Projeto de BPA boletim de producao ambulatorial, solicito ajuda.  
Eu consigo fazer carga de dados TDBSeekButton em TFieldList? vou enviar o codigo para analisarem por favor.

class SaleMultiValueForm extends TPage
{
protected $form; // form
protected $dt_venda;
protected $profiss_list;
protected $detail_row;

/**
* Class constructor
* Creates the page and the registration form
*/
function __construct($param)
{
parent::__construct($param);

// creates the form
$this->form = new BootstrapFormBuilder('form_SaleMultiValue');
$this->form->setFormTitle('Sale form');

$id = new THidden('id');
$n_cnes = new THidden('n_cnes');
$date = new TDate('date');
$date->setMask('mm/yyyy');
$customer_id = new TDBSeekButton('nu_cnes', 'faturamento', 'form_SaleMultiValue', 'SUnidade', 'no_unidade_saude', 'nu_cnes', 'no_unidade_saude');
$customer_name = new TEntry('no_unidade_saude');
$customer_id->setExitAction(new TAction(array($this, 'onExitAction')));

(isset($param['nu_cnes']) ? $filtro = $param['nu_cnes'] : $filtro = '');
$criteria = new TCriteria;
$criteria->add(new TFilter('id_cnes', '=', $filtro));
$profissional = new TDBSeekButton('prof_id', 'faturamento', 'form_SaleMultiValue', 'SProfissional', 'nome_prof', 'prof_id', 'nome_prof', $criteria);
$nome_prof = new TEntry('nome_prof');
$profissional->setExitAction(new TAction(array($this, 'onExitActionP')));

$combo = new TDBCombo('combo', 'faturamento', 'SGrupoProc', 'id', '{prd_grupo_proc}','prd_grupo_proc asc' );
$combo->setChangeAction(new TAction(array($this, 'onChangeProc')));

$id->setSize(40);
//$id->setEditable(false);
$date->setSize(140);
// $obs->setSize('100%',50);
$customer_id->setSize(100);
$profissional->setSize(100);
$customer_name->setEditable(false);
$customer_name->setSize('calc(70% - 200px)');
$combo->setSize('calc(40% - 200px)');

$nome_prof->setEditable(false);
$nome_prof->setSize('calc(70% - 200px)');

$date->addValidation('Date', new TRequiredValidator);
$customer_id->addValidation('Customer', new TRequiredValidator);

$label_date = new TLabel('CMPT (*)');
$label_cnes = new TLabel('CNES (*)');
$label_prof = new TLabel('Profissional (*)');
$label_proc = new TLabel('Grupo Proc. (*)');

$this->form->addFields( [$id] );
$this->form->addFields( [$label_date], [$date] );
$this->form->addFields( [$label_cnes], [$customer_id, $customer_name] );
$this->form->addFields( [$label_prof], [$profissional, $nome_prof] );
$this->form->addFields( [$label_proc], [$combo, $n_cnes] );

$label_date->setFontColor('#FF0000');

// create detail fields
$profiss_prod = new TDBUniqueSearch('prof_id[]', 'faturamento', 'SPa', 'PA_ID', 'PA_DC');
$profiss_prod->setMinLength(1);
$profiss_prod->setSize('100%');
$profiss_prod->setMask('{PA_ID} - {PA_DC}');
$profiss_prod->setChangeAction(new TAction(array($this, 'onChangeProfiss')));

$profiss_idade = new TEntry('profiss_idade[]');
$profiss_idade->setSize('100%');
$profiss_idade->style = 'text-align: right';
$profiss_idade->setEditable(FALSE);

$profiss_cbo = new TEntry('profiss_cbo[]');
$profiss_cbo->setSize('100%');
$profiss_cbo->style = 'text-align: right';

$profiss_cbo->setEditable(true);

$profiss_qtd = new TEntry('profiss_qtd[]');
$profiss_qtd->setSize('100%');
$profiss_qtd->setExitAction(new TAction(array($this, 'onUpdateTotal')));
$profiss_qtd->style = 'text-align: right';

$profiss_total = new TEntry('profiss_total[]');
$profiss_total->setEditable(FALSE);
$profiss_total->setNumericMask(2,',','.', true);
$profiss_total->setSize('100%');
$profiss_total->style = 'text-align: right';

$this->form->addField($profiss_prod);
$this->form->addField($profiss_idade);
$this->form->addField($profiss_cbo);
$this->form->addField($profiss_qtd);
$this->form->addField($profiss_total);

// detail
$this->profiss_list = new TFieldList;
$this->profiss_list->addField( 'Procedimento', $profiss_prod, ['width' => '50%']);
$this->profiss_list->addField( 'Idade', $profiss_idade, ['width' => '6%']);
$this->profiss_list->addField( 'CBO', $profiss_cbo, ['width' => '6%']);
$this->profiss_list->addField( 'QTD.', $profiss_qtd, ['width' => '6%']);
$this->profiss_list->addField( 'Total', $profiss_total, ['width' => '20%', 'sum' => true]);
$this->profiss_list-> width = '100%';
$this->profiss_list->enableSorting();

$this->form->addFields( [new TFormSeparator('profissional') ] );
$this->form->addFields( [$this->profiss_list] );

$this->form->addAction( _t('Save'), new TAction( [$this, 'onSave'] ), 'fa:save green' );
$this->form->addAction( 'Adiconar Unidade', new TAction( [$this, 'onClear'] ), 'fa:eraser red' );

// update total when remove item row
// create the page container
$container = new TVBox;
$container->style = 'width: 100%';
$container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
$container->add($this->form);
parent::add($container);
}

public static function onExitAction($param)
{
$profiss_id = $param['nu_cnes'];
try
{
TTransaction::open('faturamento');
$profiss = new SUnidade($profiss_id); // reads the profiss
$obj = new StdClass;
$obj->nu_cnes = $profiss->nu_cnes;
$obj->no_unidade_saude = $profiss->no_unidade_saude;
$obj->n_cnes = $profiss->nu_cnes;
TTransaction::close();
TForm::sendData('form_SaleMultiValue', $obj, null, null);
TApplication::postData('form_SaleMultiValue', __CLASS__, 'onClear', ['static'=>1]);
}
catch (Exception $e)
{
// does nothing
}
}

public static function onChangeProc($param)
{

$profiss_id = $param['key'];
if ($profiss_id)
{
$response = new stdClass;
try
{
TTransaction::open('faturamento');
$profiss = SGrupoProc::find($profiss_id);
$response->prd_grupo_cod = $profiss->prd_grupo_cod;
TTransaction::close();
TForm::sendData('form_SaleMultiValue', $response);

}
catch (Exception $e)
{
TTransaction::rollback();
}
}
}


public static function onExitActionP($param)
{
$profiss_id = $param['key'];

$input_id = $param['_field_id'];
$profiss_id = $param['_field_value'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);
parse_str($param['_field_data'], $field_data);

try
{
TTransaction::open('faturamento');
$profiss = new SProfissional($profiss_id); // reads the profiss
$obj = new StdClass;
$obj->{'profiss_cbo_'.$unique_id} = $profiss->cbo_prof;
TTransaction::close();
TForm::sendData('form_SaleMultiValue', $obj);
}
catch (Exception $e)
{
// does nothing
}
}


function onEdit($param)
{
try
{
TTransaction::open('samples');

if (isset($param['key']))
{
$key = $param['key'];

$sale = new Sale($key);
$this->form->setData($sale);

$sale_items = SaleItem::where('sale_id', '=', $sale->id)->load();

$this->profiss_list->addHeader();
if ($sale_items)
{
foreach($sale_items as $item )
{
$item->profiss_cbo = $item->sale_cbo;
$item->profiss_qtd = $item->qtd;
$item->profiss_total = $item->sale_cbo * $item->qtd;
$this->profiss_list->addDetail($item);
}
$this->profiss_list->addCloneAction();
}
else
{
$this->onClear($param);
}

TTransaction::close(); // close transaction
}
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}

/**
* Change profiss
*/

public static function onChangeProfiss($param)
{
$input_id = $param['_field_id'];
$product_id = $param['_field_value'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);

if ($product_id)
{
$response = new stdClass;
try
{
TTransaction::open('faturamento');
$profiss = SProfissional::find($product_id);
$response->{'cbo_prof_'.$unique_id} = $profiss->cbo_prof;
TForm::sendData('form_SaleMultiValue', $response);
TTransaction::close();
}
catch (Exception $e)
{
TTransaction::rollback();
}
}
}

/**
* Update the total based on the sale price, amount and discount
*/
public static function onUpdateTotal($param)
{ var_dump($param);
$input_id = $param['_field_id'];
$profiss_id = $param['_field_value'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);
parse_str($param['_field_data'], $field_data);

$pcbo = $profiss->nu_cbo_prof;
$obj = new StdClass;
$obj->{'profiss_cbo_'.$unique_id} = '2';
TForm::sendData('form_SaleMultiValue', $obj);
}

/**
* Clear form
*/
public function onClear($param)
{
$data = $this->form->getData();
$this->profiss_list->addHeader();
$this->profiss_list->addDetail( new stdClass );
$this->profiss_list->addCloneAction();
$this->form->setData($data);
}

/**
* Save the sale and the sale items
*/
public static function onSave($param)
{
try
{
// open a transaction with database 'samples'
TTransaction::open('samples');
$id = (int) $param['id'];
$sale = new Sale($id);
$sale->date = $param['date'];
$sale->customer_id = $param['customer_id'];
$sale->obs = $param['obs'];
$total = 0;
$sale->store();

$sale_items = SaleItem::where('sale_id', '=', $sale->id)->delete();

if( !empty($param['profiss_id']) AND is_array($param['profiss_id']) )
{
foreach( $param['profiss_id'] as $row => $profiss_id)
{
if ($profiss_id)
{
$item = new SaleItem;
$item->profiss_id = $profiss_id;
$item->sale_cbo = (float) str_replace(['.',','], ['','.'], $param['profiss_cbo'][$row]);
$item->qtd = (float) str_replace(['.',','], ['','.'], $param['profiss_qtd'][$row]);
$item->discount = 0;
$item->total = $item->sale_cbo * $item->qtd;

$total += $item->total;
$item->sale_id = $sale->id;
$item->store();
}
}
}

$sale->total = $total;
$sale->store(); // stores the object

$data = new stdClass;
$data->id = $sale->id;
TForm::sendData('form_SaleMultiValue', $data);
TTransaction::close(); // close the transaction
new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}

}

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (0)