Lançado Adianti Framework 7.6!
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();
}
}

}

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)