ot pliegos

This commit is contained in:
amazuecos
2025-04-27 10:58:23 +02:00
parent 45e41c77e4
commit c75d08b3c3
17 changed files with 355 additions and 121 deletions

View File

@ -744,8 +744,8 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
$routes->get('datatable_ferro_pendiente', 'Ordentrabajo::datatable_ferro_pendiente'); $routes->get('datatable_ferro_pendiente', 'Ordentrabajo::datatable_ferro_pendiente');
$routes->get('datatable_ferro_ok', 'Ordentrabajo::datatable_ferro_ok'); $routes->get('datatable_ferro_ok', 'Ordentrabajo::datatable_ferro_ok');
$routes->get('tareas/datatable/(:num)', 'Ordentrabajo::tareas_datatable/$1', ['as' => 'datatableTareasOrdenTrabajo']); $routes->get('tareas/datatable/(:num)', 'Ordentrabajo::tareas_datatable/$1', ['as' => 'datatableTareasOrdenTrabajo']);
$routes->get("tarea/progress/(:num)","Ordentrabajo::get_orden_trabajo_progress_date/$1"); $routes->get("tarea/progress/(:num)", "Ordentrabajo::get_orden_trabajo_progress_date/$1");
$routes->get('tarea/(:num)', 'Ordentrabajo::find_tarea/$1');
/**====================== /**======================
* UPDATES * UPDATES
*========================**/ *========================**/
@ -760,15 +760,16 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
$routes->post("upload/portada", 'Ordentrabajo::upload_orden_trabajo_portada'); $routes->post("upload/portada", 'Ordentrabajo::upload_orden_trabajo_portada');
$routes->delete("portada/(:num)", 'Ordentrabajo::delete_orden_trabajo_portada/$1'); $routes->delete("portada/(:num)", 'Ordentrabajo::delete_orden_trabajo_portada/$1');
$routes->get("color/(:num)", 'Ordentrabajo::get_orden_trabajo_color_status/$1'); $routes->get("color/(:num)", 'Ordentrabajo::get_orden_trabajo_color_status/$1');
$routes->post("update/tarea/progress","Ordentrabajo::store_orden_trabajo_progress_date"); $routes->post("update/tarea/progress", "Ordentrabajo::store_orden_trabajo_progress_date");
$routes->delete("tarea/progress/(:num)","Ordentrabajo::delete_orden_trabajo_progress_date/$1"); $routes->post("update/tarea/pliegos", "Ordentrabajo::update_orden_trabajo_pliegos");
$routes->delete("tarea/progress/(:num)", "Ordentrabajo::delete_orden_trabajo_progress_date/$1");
/**====================== /**======================
* FILES * FILES
*========================**/ *========================**/
$routes->post('get_files', 'Ordentrabajo::get_files'); $routes->post('get_files', 'Ordentrabajo::get_files');
$routes->post('upload_files', 'Ordentrabajo::upload_files'); $routes->post('upload_files', 'Ordentrabajo::upload_files');
$routes->get('barcode/(:num)', 'Ordentrabajo::imprimir_codigo_safekat/$1',['as' => "getOrdenTrabajoBarCode"]); $routes->get('barcode/(:num)', 'Ordentrabajo::imprimir_codigo_safekat/$1', ['as' => "getOrdenTrabajoBarCode"]);
/**====================== /**======================
* PDF * PDF
*========================**/ *========================**/
@ -818,7 +819,7 @@ $routes->group('logistica', ['namespace' => 'App\Controllers\Logistica'], functi
$routes->post('finalizarEnvio', 'LogisticaController::finalizarEnvio'); $routes->post('finalizarEnvio', 'LogisticaController::finalizarEnvio');
$routes->post('generateEnvio', 'LogisticaController::generarEnvio'); $routes->post('generateEnvio', 'LogisticaController::generarEnvio');
$routes->get('selectForNewEnvio', 'LogisticaController::findForNewEnvio'); $routes->get('selectForNewEnvio', 'LogisticaController::findForNewEnvio');
$routes->get('selectDireccionForEnvio', 'LogisticaController::selectDireccionForEnvio'); $routes->get('selectDireccionForEnvio', 'LogisticaController::selectDireccionForEnvio');
$routes->post('imprimirEtiquetas', 'LogisticaController::imprimirEtiquetas'); $routes->post('imprimirEtiquetas', 'LogisticaController::imprimirEtiquetas');
}); });

View File

@ -70,6 +70,11 @@ class Ordentrabajo extends BaseController
} }
public function find_tarea($orden_trabajo_tarea_id)
{
$t = $this->otTarea->find($orden_trabajo_tarea_id);
return $this->response->setJSON($t);
}
public function get_orden_trabajo_summary($orden_trabajo_id) public function get_orden_trabajo_summary($orden_trabajo_id)
{ {
try { try {
@ -100,7 +105,7 @@ class Ordentrabajo extends BaseController
public function update_orden_trabajo_tarea() public function update_orden_trabajo_tarea()
{ {
$bodyData = $this->request->getPost(); $bodyData = $this->request->getPost();
// return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "data" => $bodyData]); return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "data" => $bodyData]);
$validated = $this->validation->run($bodyData, "orden_trabajo_tarea"); $validated = $this->validation->run($bodyData, "orden_trabajo_tarea");
if ($validated) { if ($validated) {
$r = $this->produccionService->updateOrdenTrabajoTarea($bodyData["orden_trabajo_tarea_id"], $bodyData); $r = $this->produccionService->updateOrdenTrabajoTarea($bodyData["orden_trabajo_tarea_id"], $bodyData);
@ -109,6 +114,18 @@ class Ordentrabajo extends BaseController
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400); return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
} }
} }
public function update_orden_trabajo_pliegos()
{
$bodyData = $this->request->getPost();
// return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "data" => $bodyData]);
$validated = $this->validation->run($bodyData, "orden_trabajo");
if ($validated) {
$r = $this->produccionService->init($bodyData["orden_trabajo_id"])->updateOrdenTrabajoTareaPliegos($bodyData);
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r, "data" => $bodyData]);
} else {
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
}
}
public function update_orden_trabajo_date() public function update_orden_trabajo_date()
{ {
$bodyData = $this->request->getPost(); $bodyData = $this->request->getPost();
@ -128,7 +145,7 @@ class Ordentrabajo extends BaseController
$validated = $this->validation->run($bodyData, "orden_trabajo_date"); $validated = $this->validation->run($bodyData, "orden_trabajo_date");
if ($validated) { if ($validated) {
$validatedData = $bodyData; $validatedData = $bodyData;
$r = $this->produccionService->emptyOrdenTrabajoDate($validatedData['orden_trabajo_id'],$validatedData['name']); $r = $this->produccionService->emptyOrdenTrabajoDate($validatedData['orden_trabajo_id'], $validatedData['name']);
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r, "user" => auth()->user(), "data" => $bodyData]); return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r, "user" => auth()->user(), "data" => $bodyData]);
} else { } else {
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400); return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
@ -524,10 +541,10 @@ class Ordentrabajo extends BaseController
{ {
return view(static::$viewPath . '/maquinista/viewMaquinistaPlanningList', $this->viewData); return view(static::$viewPath . '/maquinista/viewMaquinistaPlanningList', $this->viewData);
} }
public function maquinista_maquina_tareas_datatable(string $content , int $maquina_id) public function maquinista_maquina_tareas_datatable(string $content, int $maquina_id)
{ {
$pm = $this->produccionService->getMaquinaImpresionTareasList($maquina_id); $pm = $this->produccionService->getMaquinaImpresionTareasList($maquina_id);
if($content == 'today'){ if ($content == 'today') {
$pm->like('pedidos.fecha_impresion', Time::now()->format('Y-m-d')); $pm->like('pedidos.fecha_impresion', Time::now()->format('Y-m-d'));
} }
return DataTable::of($pm) return DataTable::of($pm)

View File

@ -80,7 +80,7 @@ class CreateCatalogoLibros extends Migration
$this->forge->addUniqueKey('isk'); $this->forge->addUniqueKey('isk');
$this->forge->addForeignKey('cliente_id', 'clientes', 'id'); $this->forge->addForeignKey('cliente_id', 'clientes', 'id');
$this->forge->createTable('catalogo_libros'); $this->forge->createTable('catalogo_libros',true);
$this->db->query('SET foreign_key_checks = 1'); $this->db->query('SET foreign_key_checks = 1');
} }

View File

@ -0,0 +1,41 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class AddPliegoColumnOrdenTrabajoTarea extends Migration
{
protected array $COLUMNS = [
"pliego_1" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
"pliego_1_total" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
"pliego_2" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
"pliego_2_total" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
];
public function up()
{
$this->forge->addColumn('orden_trabajo_tareas', $this->COLUMNS);
}
public function down()
{
$this->forge->dropColumn('orden_trabajo_tareas', array_keys($this->COLUMNS));
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class AddPliegoColumnOrdenTrabajoTarea extends Migration
{
public function up()
{
$this->forge->dropForeignKey('orden_trabajo_tarea_progress_dates','orden_trabajo_tarea_progress_dates_ot_tarea_id_foreign');
$this->forge->addForeignKey("ot_tarea_id","orden_trabajo_tareas","id",'CASCADE','CASCADE');
$this->forge->processIndexes('orden_trabajo_tarea_progress_dates');
}
public function down()
{
$this->forge->dropForeignKey('orden_trabajo_tarea_progress_dates','orden_trabajo_tarea_progress_dates_ot_tarea_id_foreign');
$this->forge->addForeignKey("ot_tarea_id","orden_trabajo_tareas","id");
$this->forge->processIndexes('orden_trabajo_tarea_progress_dates');
}
}

View File

@ -68,7 +68,7 @@ class OrdenTrabajoEntity extends Entity
/** /**
* Devuelve las tareas de la orden de trabajo. * Devuelve las tareas de la orden de trabajo.
* *
* @return array<OrdenTrabajoTarea> * @return array<OrdenTrabajoTareaEntity>
*/ */
public function tareas(): array public function tareas(): array
{ {

View File

@ -34,8 +34,11 @@ class OrdenTrabajoTareaEntity extends Entity
"comment" => null, "comment" => null,
"click_init" => null, "click_init" => null,
"click_end" => null, "click_end" => null,
"pliego_1" => null,
"pliego_1_total" => null,
"pliego_2" => null,
"pliego_2_total" => null,
]; ];
protected $datamap = [];
protected $dates = ['created_at', 'updated_at', 'deleted_at']; protected $dates = ['created_at', 'updated_at', 'deleted_at'];
protected $casts = [ protected $casts = [
"id" => "integer", "id" => "integer",
@ -52,6 +55,10 @@ class OrdenTrabajoTareaEntity extends Entity
"comment" => "?string", "comment" => "?string",
"click_init" => "integer", "click_init" => "integer",
"click_end" => "integer", "click_end" => "integer",
"pliego_1" => "integer",
"pliego_1_total" => "integer",
"pliego_2" => "integer",
"pliego_2_total" => "integer",
]; ];
/** /**
@ -113,6 +120,20 @@ class OrdenTrabajoTareaEntity extends Entity
$m = model(PresupuestoAcabadosModel::class); $m = model(PresupuestoAcabadosModel::class);
return $m->find($this->attributes["presupuesto_linea_id"]); return $m->find($this->attributes["presupuesto_linea_id"]);
} }
/**
* Devuelve el presupuesto acabado origen de esta tarea
*
* @return ?PresupuestoManipuladosEntity
*/
public function presupuesto_manipulado(): ?PresupuestoManipuladosEntity
{
$m = model(PresupuestoManipuladosModel::class);
$p = null;
if ($this->attributes['presupuesto_manipulado_id']) {
$p = $m->find($this->attributes["presupuesto_manipulado_id"]);
}
return $p;
}
public function imposicion(): ?Imposicion public function imposicion(): ?Imposicion
{ {
$m = model(ImposicionModel::class); $m = model(ImposicionModel::class);
@ -152,5 +173,13 @@ class OrdenTrabajoTareaEntity extends Entity
{ {
return $this->attributes['click_end'] - $this->attributes['click_init']; return $this->attributes['click_end'] - $this->attributes['click_init'];
} }
public function isCosido(): bool
{
$isTareaCosido = false;
$pm = $this->presupuesto_manipulado();
if ($pm) {
$isTareaCosido = $pm->tarifa()->isCosido();
}
return $isTareaCosido;
}
} }

View File

@ -33,4 +33,9 @@ class TarifaManipuladoEntity extends \CodeIgniter\Entity\Entity
"user_updated_id" => "int", "user_updated_id" => "int",
"is_deleted" => "int", "is_deleted" => "int",
]; ];
public function isCosido(): bool
{
return in_array($this->attributes['id'], [3, 17]);
}
} }

View File

@ -50,6 +50,7 @@ return [
"pendientes" => "Pendientes", "pendientes" => "Pendientes",
"ferro_ok" => "Ferro ok", "ferro_ok" => "Ferro ok",
"envio" => "Envío", "envio" => "Envío",
"ferro" => "Ferro",
"ot" => "Orden trabajo", "ot" => "Orden trabajo",
"ots" => "Órdenes trabajo", "ots" => "Órdenes trabajo",
"tiempo_procesamiento" => "Tiempo procesamiento", "tiempo_procesamiento" => "Tiempo procesamiento",
@ -121,8 +122,9 @@ return [
], ],
"progress_ferro" => "Ferro",
"progress_preimpresion" => "Preimpresión", "progress_preimpresion" => "Preimpresión",
"progress_logistica" => "Ferro/Logística", "progress_logistica" => "Logística",
"progress_impresion" => "Impresión", "progress_impresion" => "Impresión",
"progress_manipulado" => "Manipulado/Acabado", "progress_manipulado" => "Manipulado/Acabado",

View File

@ -32,7 +32,11 @@ class OrdenTrabajoTarea extends Model
"tipo_corte", "tipo_corte",
"comment", "comment",
"click_init", "click_init",
"click_end" "click_end",
"pliego_1",
"pliego_1_total",
"pliego_2",
"pliego_2_total"
]; ];
protected bool $allowEmptyInserts = false; protected bool $allowEmptyInserts = false;

View File

@ -98,6 +98,13 @@ class ProductionService extends BaseService
* @var boolean * @var boolean
*/ */
public bool $isGofrado = false; //* CHECK DONE public bool $isGofrado = false; //* CHECK DONE
/**
* Indica si la orden de trabajo contiene cosido
* Se usa para mostrar la fecha correspondiente en la vista y pliegos
* @var boolean
*/
public bool $isCosido = false; //* CHECK DONE
/** /**
* Indica si la orden de trabajo contiene gofrado * Indica si la orden de trabajo contiene gofrado
* Se usa para mostrar la fecha correspondiente en la vista * Se usa para mostrar la fecha correspondiente en la vista
@ -222,7 +229,6 @@ class ProductionService extends BaseService
{ {
return $this->ot; return $this->ot;
} }
/** /**
* Crea una instancia de la orden de trabajo * Crea una instancia de la orden de trabajo
* *
@ -814,6 +820,7 @@ class ProductionService extends BaseService
"tareas_impresion" => $this->tareas_impresion(), "tareas_impresion" => $this->tareas_impresion(),
"tiempo_procesamiento" => $this->getTiempoProcesamientoHHMM(), "tiempo_procesamiento" => $this->getTiempoProcesamientoHHMM(),
"statusColor" => $this->getOtColorStatus(), "statusColor" => $this->getOtColorStatus(),
"tareaCosido" => $this->getTareaCosido(),
]; ];
return $summary; return $summary;
} }
@ -842,8 +849,8 @@ class ProductionService extends BaseService
"tiempo_impresion" => $this->getTiempoTareasImpresionHHMM(), "tiempo_impresion" => $this->getTiempoTareasImpresionHHMM(),
"colors" => $this->getPdfColors(), "colors" => $this->getPdfColors(),
"isPOD" => $this->isPOD, "isPOD" => $this->isPOD,
"uvi" => $this->getUVI() "uvi" => $this->getUVI(),
"tareaCosido" => $this->getTareaCosido(),
]; ];
} }
public function getImposicionTareaImpresion(): ?Imposicion public function getImposicionTareaImpresion(): ?Imposicion
@ -894,27 +901,27 @@ class ProductionService extends BaseService
public function getPresupuestoLineaImpresion() {} public function getPresupuestoLineaImpresion() {}
public function tareas_acabado(): array public function tareas_acabado(): array
{ {
$q = $this->otTarea->where("presupuesto_acabado_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_acabado_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_impresion(): array public function tareas_impresion(): array
{ {
$q = $this->otTarea->where("presupuesto_linea_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_linea_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_encuadernacion(): array public function tareas_encuadernacion(): array
{ {
$q = $this->otTarea->where("presupuesto_encuadernado_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_encuadernado_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_preimpresion(): array public function tareas_preimpresion(): array
{ {
$q = $this->otTarea->where("presupuesto_preimpresion_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_preimpresion_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_manipulado(): array public function tareas_manipulado(): array
{ {
$q = $this->otTarea->where("presupuesto_manipulado_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_manipulado_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
/**======================================================================== /**========================================================================
@ -929,6 +936,18 @@ class ProductionService extends BaseService
} }
return $this->otTarea->update($tarea_id, $data); return $this->otTarea->update($tarea_id, $data);
} }
public function updateOrdenTrabajoTareaPliegos($data_pliegos): bool
{
$flag = false;
$tareas = $this->ot->tareas();
foreach ($tareas as $key => $tarea) {
if ($tarea->isCosido()) {
$flag = $this->otTarea->update($tarea->id, $data_pliegos);
break;
}
}
return $flag;
}
public function storeOrdenTrabajoTareaProgressDate($data): bool public function storeOrdenTrabajoTareaProgressDate($data): bool
{ {
$data["action_at"] = Time::now()->format('Y-m-d H:i:s'); $data["action_at"] = Time::now()->format('Y-m-d H:i:s');
@ -1618,7 +1637,8 @@ class ProductionService extends BaseService
"isColor" => $this->isColor, "isColor" => $this->isColor,
"isBN" => $this->isBN, "isBN" => $this->isBN,
"isCorte" => $this->corte(), "isCorte" => $this->corte(),
"isGrapado" => $this->isGrapado "isGrapado" => $this->isGrapado,
"isCosido" => $this->cosido(),
]; ];
} }
public function gofrado(): bool public function gofrado(): bool
@ -1638,6 +1658,20 @@ class ProductionService extends BaseService
$this->isGofrado = $flag; $this->isGofrado = $flag;
return $this->isGofrado; return $this->isGofrado;
} }
public function cosido(): bool
{
$flag = false;
$manipulados = $this->presupuesto->manipulados();
foreach ($manipulados as $key => $manipulado) {
$tarifa_manipulado = $manipulado->tarifa();
if ($tarifa_manipulado->isCosido()) {
$flag = true;
break;
}
}
$this->isCosido = $flag;
return $this->isCosido;
}
public function uvi(): bool public function uvi(): bool
{ {
$flag = false; $flag = false;
@ -1737,4 +1771,16 @@ class ProductionService extends BaseService
$url = route_to("viewProduccionMaquinistaTareaView", $id); $url = route_to("viewProduccionMaquinistaTareaView", $id);
return "<a type='button' href='$url' class='maquina-btn btn btn-primary btn-md'><span class='ti ti-arrow-big-right'></span></a>"; return "<a type='button' href='$url' class='maquina-btn btn btn-primary btn-md'><span class='ti ti-arrow-big-right'></span></a>";
} }
public function getTareaCosido(): ?OrdenTrabajoTareaEntity
{
$tareaCosido = null;
$tareas = $this->ot->tareas();
foreach ($tareas as $key => $tarea) {
if ($tarea->isCosido()) {
$tareaCosido = $tarea;
break;
}
}
return $tareaCosido;
}
} }

View File

@ -21,7 +21,95 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-3 <?= $user_dates["pre_formato_at"]||$user_dates["pre_lomo_at"]||$user_dates["pre_solapa_at"]||$user_dates["pre_codbarras_at"]||$user_dates["pre_imposicion_at"] ? "" : "d-none" ?>">
<!-- PREIMPRESION -->
<!-- Preformato -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<h4><?= lang("Produccion.progress_preimpresion") ?></h4>
</div>
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_formato ? "" : "d-none" ?>">
<label for="ot-preformato-btn" class="form-label"><?= @lang("Produccion.pre_formato") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_formato_at" id="ot-preformato-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_formato_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Prelomo -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_lomo ? "" : "d-none" ?>">
<label for="ot-prelomo-btn" class="form-label"><?= @lang("Produccion.pre_lomo") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_lomo_at" id="ot-prelomo-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_lomo_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Presolapa -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_solapa ? "" : "d-none" ?>">
<label for="ot-presolapa-btn" class="form-label"><?= @lang("Produccion.pre_solapa") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_solapa_at" id="ot-presolapa-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_solapa_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Precodbarras -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_codigo_barras ? "" : "d-none" ?>">
<label for="ot-precodbarras-btn" class="form-label"><?= @lang("Produccion.pre_codbarras") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_codbarras_at" id="ot-precodbarras-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_codbarras_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Preimposicion -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->realizar_imposicion ? "" : "d-none" ?>">
<label for="ot-preimposicion-btn" class="form-label"><?= @lang("Produccion.pre_imposicion") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_imposicion_at" id="ot-preimposicion-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_imposicion_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
</div>
<div class="col-md-3 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<h4><?= lang("Produccion.progress_ferro") ?></h4>
</div>
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<label for="ot-pendiente-ferro" class="form-label"><?= @lang("Produccion.pendiente_ferro") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" name="pendiente_ferro_at" placeholder="DD/MM/YYYY" id="ot-pendiente-ferro" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pendiente_ferro_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<label for="ot-ferro-cliente" class="form-label"><?= @lang("Produccion.ferro_cliente") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_en_cliente_at" placeholder="DD/MM/YYYY" id="ot-ferro-cliente" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_en_cliente_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<label for="ot-ferro-ok" class="form-label"><?= @lang("Produccion.ferro_ok") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_ok_at" placeholder="DD/MM/YYYY" id="ot-ferro-ok" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_ok_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
</div>
<div class="col-md-3"> <div class="col-md-3">
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
@ -164,34 +252,7 @@
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<h4><?= lang("Produccion.progress_logistica") ?></h4> <h4><?= lang("Produccion.progress_logistica") ?></h4>
</div> </div>
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<label for="ot-pendiente-ferro" class="form-label"><?= @lang("Produccion.pendiente_ferro") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" name="pendiente_ferro_at" placeholder="DD/MM/YYYY" id="ot-pendiente-ferro" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pendiente_ferro_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<label for="ot-ferro-cliente" class="form-label"><?= @lang("Produccion.ferro_cliente") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_en_cliente_at" placeholder="DD/MM/YYYY" id="ot-ferro-cliente" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_en_cliente_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<label for="ot-ferro-ok" class="form-label"><?= @lang("Produccion.ferro_ok") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_ok_at" placeholder="DD/MM/YYYY" id="ot-ferro-ok" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_ok_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<label for="ot-embalaje" class="form-label"><?= @lang("Produccion.embalaje") ?></label> <label for="ot-embalaje" class="form-label"><?= @lang("Produccion.embalaje") ?></label>
@ -214,61 +275,7 @@
</div> </div>
</div> </div>
<div class="col-md-3">
<!-- PREIMPRESION -->
<!-- Preformato -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<h4><?= lang("Produccion.progress_preimpresion") ?></h4>
</div>
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_formato ? "" : "d-none" ?>">
<label for="ot-preformato-btn" class="form-label"><?= @lang("Produccion.pre_formato") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_formato_at" id="ot-preformato-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_formato_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Prelomo -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_lomo ? "" : "d-none" ?>">
<label for="ot-prelomo-btn" class="form-label"><?= @lang("Produccion.pre_lomo") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_lomo_at" id="ot-prelomo-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_lomo_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Presolapa -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_solapa ? "" : "d-none" ?>">
<label for="ot-presolapa-btn" class="form-label"><?= @lang("Produccion.pre_solapa") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_solapa_at" id="ot-presolapa-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_solapa_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Precodbarras -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_codigo_barras ? "" : "d-none" ?>">
<label for="ot-precodbarras-btn" class="form-label"><?= @lang("Produccion.pre_codbarras") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_codbarras_at" id="ot-precodbarras-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_codbarras_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Preimposicion -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->realizar_imposicion ? "" : "d-none" ?>">
<label for="ot-preimposicion-btn" class="form-label"><?= @lang("Produccion.pre_imposicion") ?></label>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_imposicion_at" id="ot-preimposicion-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_imposicion_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="row"> <div class="row">

View File

@ -34,7 +34,23 @@
<div class="tab-content p-0"> <div class="tab-content p-0">
<!-- TAREAS --> <!-- TAREAS -->
<div class="tab-pane fade show active" id="nav-ot-task-general" role="tabpanel"> <div class="tab-pane fade show active" id="nav-ot-task-general" role="tabpanel">
<div class="row text-start"> <div class="row justify-content-end">
<div class="col-md-4">
<?php if ($flags["isCosido"] && $tareaCosido): ?>
<div class="form-group text-start">
<label for="">Pliegos</label>
<div class="d-flex flex-row justify-content-start align-items-center gap-2">
<input type="text" id="pliegos-1" class="form-control ot-pliegos" name="pliego_1" value="<?= $tareaCosido->pliego_1 ?>">
<span>de</span>
<input type="text" id="pliegos-1-total" class="form-control ot-pliegos" name="pliego_1_total" value="<?= $tareaCosido->pliego_1_total ?>">
<input type="text" id="pliegos-2" class="form-control ot-pliegos" name="pliego_2" value="<?= $tareaCosido->pliego_2 ?>">
<span>de</span>
<input type="text" id="pliegos-2-total" class="form-control ot-pliegos" name="pliego_2_total" value="<?= $tareaCosido->pliego_2_total ?>">
<button type="button" id="btn-update-pliegos" class="btn btn-primary"><span class="ti ti-device-floppy"></span></button>
</div>
</div>
<?php endif; ?>
</div>
<div class="col-md-12"> <div class="col-md-12">
<?= view("themes/vuexy/components/tables/ot_task_table", ["id" => "ot-task-table"]) ?> <?= view("themes/vuexy/components/tables/ot_task_table", ["id" => "ot-task-table"]) ?>
@ -43,6 +59,7 @@
<div class="row d-flex flex-row justify-content-between align-items-center mt-2 gap-2"> <div class="row d-flex flex-row justify-content-between align-items-center mt-2 gap-2">
<div class="col-md-3 text-start"> <div class="col-md-3 text-start">
<!-- <button type="button" class="btn btn-primary btn-md align-items-center" id="btn-add-tarea"><span class="ti ti-plus ti-sm me-1"></span> Insertar tarea</button> --> <!-- <button type="button" class="btn btn-primary btn-md align-items-center" id="btn-add-tarea"><span class="ti ti-plus ti-sm me-1"></span> Insertar tarea</button> -->
</div> </div>
<div class="col-md-3 gap-2 text-end"> <div class="col-md-3 gap-2 text-end">

View File

@ -13,8 +13,8 @@
<?php foreach ($encuadernaciones as $key => $value): ?> <?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;"> <tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td> <td><?= $value->tarifa()->nombre ?></td>
<td><?=$linea_impresion->pliegos?></td> <td><?=$tareaCosido->pliego_1." de ".$tareaCosido->pliego_1_total?></td>
<td><?=$linea_impresion->pliegos?></td> <td><?=$tareaCosido->pliego_2." de ".$tareaCosido->pliego_2_total?></td>
<td></td> <td></td>
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td> <td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td> <td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>

View File

@ -13,8 +13,8 @@
<?php foreach ($encuadernaciones as $key => $value): ?> <?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;"> <tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td> <td><?= $value->tarifa()->nombre ?></td>
<td><?=$linea_impresion->pliegos?></td> <td><?=$tareaCosido->pliego_1." de ".$tareaCosido->pliego_1_total?></td>
<td><?=$linea_impresion->pliegos?></td> <td><?=$tareaCosido->pliego_2." de ".$tareaCosido->pliego_2_total?></td>
<td><?= $presupuesto->solapas ? "SI ($presupuesto->solapas_ancho mm.)" : "NO" ?></td> <td><?= $presupuesto->solapas ? "SI ($presupuesto->solapas_ancho mm.)" : "NO" ?></td>
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td> <td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td> <td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>

View File

@ -12,8 +12,8 @@
<?php foreach ($encuadernaciones as $key => $value): ?> <?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;"> <tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td> <td><?= $value->tarifa()->nombre ?></td>
<td><?= $linea_impresion->pliegos ?></td> <td><?=$tareaCosido->pliego_1." de ".$tareaCosido->pliego_1_total?></td>
<td><?= $linea_impresion->pliegos ?></td> <td><?=$tareaCosido->pliego_2." de ".$tareaCosido->pliego_2_total?></td>
<td></td> <td></td>
<td></td> <td></td>
<td>Color/NO</td> <td>Color/NO</td>

View File

@ -154,6 +154,7 @@ class OrdenTrabajo {
this.otForm.on("click", ".ot-tarea-comment", this.handleNoteTarea.bind(this)) this.otForm.on("click", ".ot-tarea-comment", this.handleNoteTarea.bind(this))
$("#btn-update-tarea-comment").on("click", this.handleTareaNoteSubmit.bind(this)) $("#btn-update-tarea-comment").on("click", this.handleTareaNoteSubmit.bind(this))
this.otForm.on("change", "#ot-comment", this.handleOtComment.bind(this)) this.otForm.on("change", "#ot-comment", this.handleOtComment.bind(this))
$("#btn-update-pliegos").on('click', this.handleUpdatePliegos.bind(this))
this._handleGetData() this._handleGetData()
this.handleGetPortada() this.handleGetPortada()
@ -162,14 +163,9 @@ class OrdenTrabajo {
this.datatableTareas = this.tareasTableItem.DataTable({ this.datatableTareas = this.tareasTableItem.DataTable({
processing: true, processing: true,
paging: false, paging: false,
layout: {
topStart: 'pageLength',
topEnd: 'search',
bottomStart: 'info',
bottomEnd: 'paging'
},
serverSide: true, serverSide: true,
responsive: true, responsive: true,
bFilter: false,
createdRow: this.filterCreatedRow.bind(this), createdRow: this.filterCreatedRow.bind(this),
pageLength: 10, pageLength: 10,
language: { language: {
@ -236,7 +232,7 @@ class OrdenTrabajo {
} }
createSelectMaquinaTarea() { createSelectMaquinaTarea() {
try { try {
this.summaryData.tasks.forEach(element => { this.summaryData.tasks.forEach(async (element) => {
let selectItem = this.item.find("#select-maquina-tarea-" + element.id); let selectItem = this.item.find("#select-maquina-tarea-" + element.id);
if (element.presupuesto_linea_id && element.is_corte == false) this.createSelectMaquinaImpresion(selectItem) if (element.presupuesto_linea_id && element.is_corte == false) this.createSelectMaquinaImpresion(selectItem)
if (element.presupuesto_acabado_id) this.createSelectMaquinaAcabado(selectItem) if (element.presupuesto_acabado_id) this.createSelectMaquinaAcabado(selectItem)
@ -322,7 +318,7 @@ class OrdenTrabajo {
maquinaSelects.reset() maquinaSelects.reset()
} }
} }
createSelectImposicion(selectItem) { async createSelectImposicion(selectItem) {
let imposicionId = selectItem.data("imposicion-id") let imposicionId = selectItem.data("imposicion-id")
let imposicionSelect = new ClassSelect(selectItem, `/imposiciones/select`, "Seleccione una imposición", true); let imposicionSelect = new ClassSelect(selectItem, `/imposiciones/select`, "Seleccione una imposición", true);
@ -359,9 +355,11 @@ class OrdenTrabajo {
this.otForm.off("change", ".ot-pedido") this.otForm.off("change", ".ot-pedido")
this.otForm.off("change", ".ot-pedido-check") this.otForm.off("change", ".ot-pedido-check")
this.otForm.off("change", ".ot-preview") this.otForm.off("change", ".ot-preview")
this.fillOtDetails() this.fillOtDetails()
this.fillOtDates() this.fillOtDates()
this.fillPreimpresionReview() this.fillPreimpresionReview()
this.fillPliegos()
this.isOtFinalizada = this.summaryData.ot.estado == "F"; this.isOtFinalizada = this.summaryData.ot.estado == "F";
this.datatableTareas.ajax.reload() this.datatableTareas.ajax.reload()
} catch (error) { } catch (error) {
@ -393,6 +391,15 @@ class OrdenTrabajo {
}
fillPliegos() {
// if (this.summaryData.tareaCosido) {
// const tareaCosido = this.summaryData.tareaCosido
// this.otForm.find('input[name=pliego_1]').val(tareaCosido.pliego_1)
// this.otForm.find('input[name=pliego_1_total]').val(tareaCosido.pliego_1_total)
// this.otForm.find('input[name=pliego_2]').val(tareaCosido.pliego_2)
// this.otForm.find('input[name=pliego_2_total]').val(tareaCosido.pliego_2_total)
// }
} }
fillOtDetails() { fillOtDetails() {
const progreso = this.summaryData.ot.progreso const progreso = this.summaryData.ot.progreso
@ -823,6 +830,40 @@ class OrdenTrabajo {
this._handleGetData() this._handleGetData()
} }
getTarea(tarea_id) {
return new Promise((resolve, reject) => {
let ajax = new Ajax(`/produccion/ordentrabajo/tarea/${tarea_id}`, null, null, (response) => {
resolve(response)
},
(error) => {
resolve(error)
})
ajax.get()
})
}
getDataPliegos() {
return {
orden_trabajo_id: this.modelId,
pliego_1: $("#pliegos-1").val(),
pliego_1_total: $("#pliegos-1-total").val(),
pliego_2: $("#pliegos-2").val(),
pliego_2_total: $("#pliegos-2-total").val(),
}
}
handleUpdatePliegos() {
let ajax = new Ajax(`/produccion/ordentrabajo/update/tarea/pliegos`,
this.getDataPliegos(),
null,
(response) => {
alertSuccess(response.message).fire()
},
(error) => {
alertError(error.message).fire()
})
ajax.post()
}
} }