Merge branch 'mod/papeles_imp_maquinas' into 'main'

rehecho papeles impresion. Lista de tarifas a 50 elementos por defecto

See merge request jjimenez/safekat!43
This commit is contained in:
2023-07-28 15:27:43 +00:00
21 changed files with 677 additions and 448 deletions

View File

@ -100,6 +100,42 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController
}
}
public function datatable_2() {
if ($this->request->isAJAX()) {
// modelos usados
$tarifa_model = new MaquinasTarifasImpresionModel();
$reqData = $this->request->getPost();
if (!isset($reqData['draw']) || !isset($reqData['columns']) ) {
$errstr = 'No data available in response to this specific request.';
$response = $this->respond(Collection::datatable( [], 0, 0, $errstr ), 400, $errstr);
return $response;
}
$start = $reqData['start'] ?? 0;
$length = $reqData['length'] ?? 5;
$search = $reqData['search']['value'];
$requestedOrder = $reqData['order']['0']['column'] ?? 1;
$order = MaquinasPapelesImpresionModel::SORTABLE_2[$requestedOrder >= 0 ? $requestedOrder : 1];
$dir = $reqData['order']['0']['dir'] ?? 'asc';
$papel_id = $reqData['papel_id'] ?? -1;
$ancho = $reqData['ancho'] ?? -1;
$alto = $reqData['alto'] ?? -1;
$isRotativa = $reqData['isRotativa'] ?? -1;
$resourceData = $this->model->getResource_maquinas($search, $papel_id, $isRotativa, $ancho, $alto)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject();
return $this->respond(Collection::datatable(
$resourceData,
$this->model->getResource_maquinas()->countAllResults(),
$this->model->getResource_maquinas($search, $papel_id, $isRotativa, $ancho, $alto)->countAllResults()
));
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
public function updateTableOnChange(){
if ($this->request->isAJAX()) {

View File

@ -32,6 +32,8 @@ use App\Models\Configuracion\PapelImpresionModel;
use App\Models\Configuracion\PapelGenericoModel;
use App\Models\Configuracion\PapelImpresionTipologiaModel;
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
use App\Models\Configuracion\MaquinaModel;
class Papelesimpresion extends \App\Controllers\GoBaseResourceController
@ -56,6 +58,8 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
$this->viewData['pageTitle'] = lang('PapelImpresion.moduleTitle');
$this->viewData['usingSweetAlert'] = true;
$this->viewData = ['usingServerSideDataTable' => true]; // JJO
// Se indica que este controlador trabaja con soft_delete
$this->soft_delete = true;
// Se indica el flag para los ficheros borrados
@ -92,14 +96,11 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
public function add()
{
$requestMethod = $this->request->getMethod();
if ($requestMethod === 'post') :
$nullIfEmpty = true; // !(phpversion() >= '8.1');
$nullIfEmpty = false; // !(phpversion() >= '8.1');
$postData = $this->request->getPost();
@ -132,7 +133,8 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
if ($thenRedirect) :
if (!empty($this->indexRoute)) :
return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message);
return redirect()->to(site_url('/configuracion/papelesimpresion/edit/' . $id))->with('sweet-success', $message);
//return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message);
else :
return $this->redirect2listView('sweet-success', $message);
endif;
@ -204,8 +206,18 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
$sanitizedData['rotativa'] = false;
}
// Hay que asegurarse de que se quitan los consumos de tintas de rotativa
// en caso de que se haya deseleccionado la opción rotativa
if(!$sanitizedData['rotativa']){
$this->tpModel->removeForPapelImpresion($id);
}
// Si hay máquinas seleccionadas, hay que guardar las que cumplan las nuevas condiciones
// y borrar el resto
$this->updateMaquinas($id, $sanitizedData);
$noException = true;
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) :
@ -293,12 +305,22 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
$length = $reqData['length'] ?? 5;
$search = $reqData['search']['value'];
$requestedOrder = $reqData['order']['0']['column'] ?? 1;
$order = PapelImpresionModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 1];
$requestedOrder2 = $reqData['order']['1']['column'] ?? $requestedOrder;
$requestedOrder3 = $reqData['order']['2']['column'] ?? $requestedOrder;
$requestedOrder4 = $reqData['order']['3']['column'] ?? $requestedOrder;
$order = PapelImpresionModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0];
$order2 = PapelImpresionModel::SORTABLE[$requestedOrder2 >= 0 ? $requestedOrder2 : 0];
$order3 = PapelImpresionModel::SORTABLE[$requestedOrder3 >= 0 ? $requestedOrder3 : 0];
$order4 = PapelImpresionModel::SORTABLE[$requestedOrder4 >= 0 ? $requestedOrder4 : 0];
$dir = $reqData['order']['0']['dir'] ?? 'asc';
$dir2 = $reqData['order']['1']['dir'] ?? $dir;
$dir3 = $reqData['order']['2']['dir'] ?? $dir;
$dir4 = $reqData['order']['3']['dir'] ?? $dir;
if($id_PG<0){
$resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject();
$resourceData = $this->model->getResource($search)->orderBy($order, $dir)->orderBy($order2, $dir2)->orderBy($order3, $dir3)
->orderBy($order4, $dir4)->limit($length, $start)->get()->getResultObject();
return $this->respond(Collection::datatable(
$resourceData,
@ -321,58 +343,6 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
}
public function datatable_editor(){
/*if ($this->request->isAJAX()) {
$reqData = $this->request->getPost();
$rows_id = array_keys($reqData['data']);
echo '<pre>' ;
var_dump($reqData['data'][$keys[0]]) ;
echo '</pre>';
}*/
if ($this->request->isAJAX()) {
$sql_details = array(
"type" => "Mysql", // Database type: "Mysql", "Postgres", "Sqlserver", "Sqlite" or "Oracle"
"user" => "sk_jjo", // Database user name
"pass" => "61tv&G1Zf^XY", // Database password
"host" => "localhost", // Database host
"port" => "", // Database connection port (can be left empty for default)
"db" => "sk_jjo", // Database name
"dsn" => "", // PHP DSN extra information. Set as `charset=utf8mb4` if you are using MySQL
"pdoAttr" => array() // PHP PDO attributes array. See the PHP documentation for all options
);
$db = new Database( array(
"type" => "Mysql",
"pdo" => $sql_details
) );
// Build our Editor instance and process the data coming from _POST
Editor::inst( $db, 'lg_papel_impresion_tipologias' )
->fields(
Field::inst( 'tipo' ),
//->validator( Validate::notEmpty( ValidateOptions::inst()) ),//->validator( Validate::values( array('negro', 'color', 'bicolor') ) ),
Field::inst( 'negro' ),
//->validator( Validate::notEmpty( ValidateOptions::inst()) ),
Field::inst( 'cyan' ),
//->validator( Validate::notEmpty( ValidateOptions::inst()) ),
Field::inst( 'magenta' ),
//->validator( Validate::notEmpty( ValidateOptions::inst()) ),
Field::inst( 'amarillo' ),
//->validator( Validate::notEmpty( ValidateOptions::inst()) ),
Field::inst( 'gota_negro' ),
//->validator( Validate::notEmpty( ValidateOptions::inst()) ),
Field::inst( 'got_color' ),
//->validator( Validate::notEmpty( ValidateOptions::inst()) ),
)
->process( $_POST )
->json();
}
}
public function allItemsSelect()
{
@ -424,24 +394,7 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
}
}
function fetch_single_data()
{
if ($this->request->isAJAX()) {
$reqData = $this->request->getPost();
if(isset($reqData['id']))
{
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$data = [
'data' => $this->tpModel->getResource($reqData['id'])->get()->getResultObject()[0],
$csrfTokenName => $newTokenHash
];
echo json_encode($data);
}
}
}
protected function getPapelGenericoListItems($selId = null)
{
@ -456,4 +409,23 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
endif;
return $data;
}
private function updateMaquinas($id, $data){
$ma_model = new MaquinaModel();
$ma_pa_model = new MaquinasPapelesImpresionModel();
$active_values = $ma_pa_model->getInitSelectedMachines($id, $data['rotativa'], $data['ancho'], $data['alto'])->get()->getResult('array');
$ma_pa_model->deleteForPapelImpresion($id);
// Se obtienen las máquinas que cumplen las condiciones
$rows = $ma_model->getIdMaquinasForPapelImpresion($id, $data['rotativa'], $data['ancho'], $data['alto'])->get()->getResult('array');
$ma_pa_model->insertRows($rows);
// Se actualizan los activos que había en caso de que los hubiera
if(count($active_values)>0){
$ma_pa_model->updateRows($active_values);
}
}
}

View File

@ -11,6 +11,18 @@ use App\Models\Configuracion\PapelImpresionTipologiaModel;
use App\Models\Configuracion\PapelImpresionModel;
use
DataTables\Editor,
DataTables\Database,
DataTables\Editor\Field,
DataTables\Editor\Format,
DataTables\Editor\Mjoin,
DataTables\Editor\Options,
DataTables\Editor\Upload,
DataTables\Editor\Validate,
DataTables\Editor\ValidateOptions;
class Papelimpresiontipologias extends \App\Controllers\GoBaseResourceController {
protected $modelName = PapelImpresionTipologiaModel::class;
@ -217,6 +229,90 @@ class Papelimpresiontipologias extends \App\Controllers\GoBaseResourceController
} // end function edit(...)
public function datatable_editor() {
if ($this->request->isAJAX()) {
include(APPPATH . "ThirdParty/DatatablesEditor/DataTables.php");
// Build our Editor instance and process the data coming from _POST
$response = Editor::inst( $db, 'lg_papel_impresion_tipologias' )
->fields(
Field::inst( 'tipo' )
->validator( Validate::values( array('negro', 'color', 'bicolor') ) ),
Field::inst( 'negro' )
->validator( 'Validate::numeric', array(
'message' => lang('ImpresionTipologias.validation.negro.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('ImpresionTipologias.validation.negro.required') )
),
Field::inst( 'cyan' )
->validator( 'Validate::numeric', array(
'message' => lang('ImpresionTipologias.validation.cyan.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('ImpresionTipologias.validation.cyan.required') )
),
Field::inst( 'magenta' )
->validator( 'Validate::numeric', array(
'message' => lang('ImpresionTipologias.validation.magenta.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('ImpresionTipologias.validation.magenta.required') )
),
Field::inst( 'amarillo' )
->validator( 'Validate::numeric', array(
'message' => lang('ImpresionTipologias.validation.amarillo.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('ImpresionTipologias.validation.amarillo.required') )
),
Field::inst( 'gota_negro' )
->validator( 'Validate::numeric', array(
'message' => lang('ImpresionTipologias.validation.gota_negro.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('ImpresionTipologias.validation.gota_negro.required') )
),
Field::inst( 'gota_color' )
->validator( 'Validate::numeric', array(
'message' => lang('ImpresionTipologias.validation.gota_color.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('ImpresionTipologias.validation.gota_color.required') )
),
Field::inst( 'papel_impresion_id' ),
)
->validator( function($editor, $action, $data){
if ($action === Editor::ACTION_CREATE || $action === Editor::ACTION_EDIT){
foreach ($data['data'] as $pkey => $values ){
$process_data['tipo'] = $data['data'][$pkey]['tipo'];
$process_data['papel_impresion_id'] = $data['data'][$pkey]['papel_impresion_id'];
$response = $this->model->checkTipo($process_data, $pkey);
// No se pueden duplicar valores al crear o al editar
if (!empty($response)){
return $response;
}
}
}
})
->debug(true)
->process( $_POST )
->data();
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$response[$csrfTokenName] = $newTokenHash;
echo json_encode($response);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
public function datatable() {
if ($this->request->isAJAX()) {