diff --git a/ci4/app/Controllers/Pedidos/Pedido.php b/ci4/app/Controllers/Pedidos/Pedido.php index 08fd9325..0cefa80a 100755 --- a/ci4/app/Controllers/Pedidos/Pedido.php +++ b/ci4/app/Controllers/Pedidos/Pedido.php @@ -276,6 +276,13 @@ class Pedido extends \App\Controllers\BaseResourceController $this->viewData['pedidoEntity'] = $pedidoEntity; + + if($pedidoEntity->estado == 'validacion'){ + $clienteModel = model('App\Models\Clientes\ClienteModel'); + $pendiente = $clienteModel->getPendienteCobro($pedidoEntity->cliente_id); + $pendiente = $pendiente[0] + $pendiente[1]; + $this->viewData['importePendiente'] = $pendiente; + } $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('Pedidos.moduleTitle') . ' ' . lang('Basic.global.edit3'); @@ -471,11 +478,12 @@ class Pedido extends \App\Controllers\BaseResourceController $pedido = $this->model->find($pedido_id); $serviceProduction->setPedido($pedido); if($pedido->orden_trabajo()){ - return $this->response->setJSON(["data"=>$pedido->orden_trabajo(),"message" => "Ya existe una orden de trabajo para este pedido"]); + return $this->response->setJSON(["status"=>false,"data"=>$pedido->orden_trabajo(),"message" => "Ya existe una orden de trabajo para este pedido"]); }else{ $r = $serviceProduction->createOrdenTrabajo(); - return $this->response->setJSON(["data"=>$r,"message" => "Orden trabajo creada correctamente"]); + $this->model->set(['estado' => 'produccion'])->where('id', $pedido_id)->update(); + return $this->response->setJSON(["status"=>true, "data"=>$r,"message" => "Orden trabajo creada correctamente"]); } } diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 9ee22475..b96eb56c 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -31,7 +31,8 @@ class Test extends BaseController public function index() { - $this->sendMail('prueba', 'Esto es una prueba', ['jaimejimenezortega@gmail.com','jaime0jimenez0ortega@gmail.com']); + $modelCliente = model('App\Models\Clientes\ClienteModel'); + var_dump($modelCliente->getPendienteCobro(1284)); } private function sendMail($subject, $body, $recipient) diff --git a/ci4/app/Database/Migrations/2025-03-26-210001_AlterOrdenTrabajoUsers.php b/ci4/app/Database/Migrations/2025-03-26-210001_AlterOrdenTrabajoUsers.php new file mode 100644 index 00000000..6c964abc --- /dev/null +++ b/ci4/app/Database/Migrations/2025-03-26-210001_AlterOrdenTrabajoUsers.php @@ -0,0 +1,222 @@ + [ + 'type' => 'INT', + 'unsigned' => true, + 'auto_increment' => true, + ], + "orden_trabajo_id" => [ + "type" => "INT", + "unsigned" => true, + ], + + "user_created_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "user_update_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "inaplazable_revised_change_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + + "ferro_disponible_hecho_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + "ferro_disponible_ok_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "ferro_entregado_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + "pendiente_ferro_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "ferro_en_cliente_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "ferro_ok_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + + + "interior_bn_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "interior_color_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "preparacion_interior_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "cubierta_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "plastificado_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "encuadernacion_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "corte_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "embalaje_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "envio_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "entrada_manipulado_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + + "pre_formato_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + + "pre_lomo_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + "pre_solapa_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + + "pre_codbarras_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + "pre_imposicion_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "pre_imprimir_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "pre_imprimir_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + ]; + + public function up() + { + $this->forge->dropTable('orden_trabajo_users',true); + $currenttime = new RawSql("CURRENT_TIMESTAMP"); + $this->forge->addField($this->USER_COLUMNS); + $this->forge->addField([ + "created_at" => [ + "type" => "TIMESTAMP", + "default" => $currenttime, + ], + "updated_at" => [ + "type" => "TIMESTAMP", + "null" => true, + ], + "deleted_at" => [ + "type" => "TIMESTAMP", + "null" => true, + ], + ]); + $this->forge->addPrimaryKey('id'); + $this->forge->addForeignKey("orden_trabajo_id", "ordenes_trabajo","id"); + $this->forge->createTable("orden_trabajo_users"); + } + + public function down() + { + $this->forge->dropTable('orden_trabajo_users'); + } +} diff --git a/ci4/app/Database/Migrations/2025-03-26-210002_AlterOrdenTrabajoDates.php b/ci4/app/Database/Migrations/2025-03-26-210002_AlterOrdenTrabajoDates.php new file mode 100644 index 00000000..89a22aed --- /dev/null +++ b/ci4/app/Database/Migrations/2025-03-26-210002_AlterOrdenTrabajoDates.php @@ -0,0 +1,174 @@ + [ + 'type' => 'INT', + 'unsigned' => true, + 'auto_increment' => true, + ], + "orden_trabajo_id" => [ + "type" => "INT", + "unsigned" => true, + ], + "fecha_entrada_at" => [ + "type" => "DATE", + "null" => true, + ], + "fecha_entrega_at" => [ + "type" => "DATE", + "null" => true, + ], + "fecha_entrega_change_at" => [ + "type" => "DATE", + "null" => true, + ], + + "fecha_entrega_real_at" => [ + "type" => "DATE", + "null" => true, + ], + + "fecha_impresion_at" => [ + "type" => "DATE", + "null" => true, + ], + "fecha_encuadernado_at" => [ + "type" => "DATE", + "null" => true, + ], + "fecha_entrega_externo" => [ + "type" => "DATE", + "null" => true, + ], + + "pendiente_ferro_at" => [ + "type" => "DATE", + "null" => true, + ], + "ferro_en_cliente_at" => [ + "type" => "DATE", + "null" => true, + ], + "ferro_ok_at" => [ + "type" => "DATE", + "null" => true, + ], + "interior_bn_at" => [ + "type" => "DATE", + "null" => true, + ], + "interior_color_at" => [ + "type" => "DATE", + "null" => true, + ], + "preparacion_interiores_at" => [ + "type" => "DATE", + "null" => true, + ], + "cubierta_at" => [ + "type" => "DATE", + "null" => true, + ], + "plastificado_at" => [ + "type" => "DATE", + "null" => true, + ], + "encuadernacion_at" => [ + "type" => "DATE", + "null" => true, + ], + "corte_at" => [ + "type" => "DATE", + "null" => true, + ], + "embalaje_at" => [ + "type" => "DATE", + "null" => true, + ], + "envio_at" => [ + "type" => "DATE", + "null" => true, + ], + "entrada_manipulado_at" => [ + "type" => "DATE", + "null" => true, + ], + + + "ferro_disponible_hecho_at" => [ + "type" => "DATE", + "null" => true, + ], + + "ferro_disponible_ok_at" => [ + "type" => "DATE", + "null" => true, + ], + + "ferro_entregado_at" => [ + "type" => "DATE", + "null" => true, + ], + "pre_formato_at" => [ + "type" => "DATE", + "null" => true, + ], + + "pre_lomo_at" => [ + "type" => "DATE", + "null" => true, + ], + + "pre_solapa_at" => [ + "type" => "DATE", + "null" => true, + ], + + "pre_codbarras_at" => [ + "type" => "DATE", + "null" => true, + ], + + "pre_imposicion_at" => [ + "type" => "DATE", + "null" => true, + ], + ]; + public function up() + { + $this->forge->dropTable('orden_trabajo_dates',true); + $currenttime = new RawSql("CURRENT_TIMESTAMP"); + $this->forge->addField($this->COLUMNS); + $this->forge->addField([ + "created_at" => [ + "type" => "TIMESTAMP", + "default" => $currenttime, + ], + "updated_at" => [ + "type" => "TIMESTAMP", + "null" => true, + ], + "deleted_at" => [ + "type" => "TIMESTAMP", + "null" => true, + ], + ]); + $this->forge->addPrimaryKey('id'); + $this->forge->addForeignKey("orden_trabajo_id", "ordenes_trabajo","id"); + $this->forge->createTable("orden_trabajo_dates"); + + } + + public function down() + { + $this->forge->dropTable('orden_trabajo_dates'); + } +} diff --git a/ci4/app/Entities/Produccion/OrdenTrabajoDateEntity.php b/ci4/app/Entities/Produccion/OrdenTrabajoDateEntity.php index bf4d8f5f..ab72cb56 100644 --- a/ci4/app/Entities/Produccion/OrdenTrabajoDateEntity.php +++ b/ci4/app/Entities/Produccion/OrdenTrabajoDateEntity.php @@ -7,8 +7,8 @@ use CodeIgniter\Entity\Entity; class OrdenTrabajoDateEntity extends Entity { protected $attributes = [ + "orden_trabajo_id" => null, "fecha_entrada_at" => null, - "fecha_entrega_at" => null, "fecha_entrega_change_at" => null, "fecha_entrega_real_at" => null, "fecha_entrega_real_warning" => null, @@ -29,14 +29,39 @@ class OrdenTrabajoDateEntity extends Entity "corte_at" => null, "embalaje_at" => null, "envio_at" => null, - "entrada_manipulado_at" => null + "entrada_manipulado_at" => null ]; protected $datamap = []; - protected $dates = ['created_at', 'updated_at', 'deleted_at']; + protected $dates = [ + 'created_at', + 'updated_at', + 'deleted_at', + 'fecha_entrega_at', + 'fecha_entrega_change_at', + 'fecha_entrega_real_at', + 'fecha_entrega_real_warning', + 'fecha_impresion_at', + 'fecha_encuadernado_at', + 'fecha_externo_at', + 'fecha_entrega_warning', + 'fecha_entrega_warning_revised', + 'pendiente_ferro_at', + 'ferro_en_cliente_at', + 'ferro_ok_at', + 'interior_bn_at', + 'interior_color_at', + 'preparacion_interiores_at', + 'cubierta_at', + 'plastificado_at', + 'encuadernacion_at', + 'corte_at', + 'embalaje_at', + 'envio_at', + 'entrada_manipulado_at' + ]; protected $casts = [ // "fecha_entrada_at" => "?datetime", - // "fecha_entrega_at" => "?datetime", // "fecha_entrega_change_at" => "?datetime", // "fecha_entrega_real_at" => "?datetime", // "fecha_entrega_real_warning" => "?bool", diff --git a/ci4/app/Entities/Produccion/OrdenTrabajoUserEntity.php b/ci4/app/Entities/Produccion/OrdenTrabajoUserEntity.php index 138c5d56..5a8b8d4e 100644 --- a/ci4/app/Entities/Produccion/OrdenTrabajoUserEntity.php +++ b/ci4/app/Entities/Produccion/OrdenTrabajoUserEntity.php @@ -8,7 +8,33 @@ class OrdenTrabajoUserEntity extends Entity { protected $datamap = []; protected $dates = ['created_at', 'updated_at', 'deleted_at']; - protected $casts = []; + protected array $casts = [ + "orden_trabajo_id" => "integer", + "user_created_id" => "?integer", + "user_update_id" => "?integer", + "inaplazable_revised_change_user_id" => "?integer", + "ferro_disponible_hecho_user_id" => "?integer", + "ferro_disponible_ok_user_id" => "?integer", + "ferro_entregado_user_id" => "?integer", + "pendiente_ferro_user_id" => "?integer", + "ferro_en_cliente_user_id" => "?integer", + "ferro_ok_user_id" => "?integer", + "interior_bn_user_id" => "?integer", + "interior_color_user_id" => "?integer", + "preparacion_interior_user_id" => "?integer", + "cubierta_user_id" => "?integer", + "plastificado_user_id" => "?integer", + "encuadernacion_user_id" => "?integer", + "corte_user_id" => "?integer", + "embalaje_user_id" => "?integer", + "entrada_manipulado_user_id" => "?integer", + "pre_formato_user_id" => "?integer", + "pre_lomo_user_id" => "?integer", + "pre_solapa_user_id" => "?integer", + "pre_codbarras_user_id" => "?integer", + "pre_imposicion_user_id" => "?integer", + "pre_imprimir_user_id" => "?integer" + ]; protected $attributes = [ "orden_trabajo_id"=> null, "user_created_id"=> null, diff --git a/ci4/app/Language/es/Pedidos.php b/ci4/app/Language/es/Pedidos.php index bb9fc447..aa9c20e2 100644 --- a/ci4/app/Language/es/Pedidos.php +++ b/ci4/app/Language/es/Pedidos.php @@ -14,6 +14,7 @@ return [ 'tiradas' => 'Tiradas', 'total_presupuesto' => 'Total', 'estado' => 'Estado', + 'importePendiente' => 'Importe Pendiente', 'validacion' => 'Validación', 'produccion' => 'Producción', diff --git a/ci4/app/Models/Clientes/ClienteModel.php b/ci4/app/Models/Clientes/ClienteModel.php index 79af78df..a09c6cd6 100755 --- a/ci4/app/Models/Clientes/ClienteModel.php +++ b/ci4/app/Models/Clientes/ClienteModel.php @@ -309,9 +309,26 @@ class ClienteModel extends \App\Models\BaseModel /* TO-DO: Implementar la lógica de negocio para el crédito disponible */ - public function creditoDisponible($cliente_id) + public function creditoDisponible($cliente_id, $total_pedido = 0) { - return true; + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.limite_credito AS limite_credito" + ) + ->where("t1.is_deleted", 0) + ->where("t1.id", $cliente_id); + $limite = $builder->get()->getResultObject(); + + if($limite){ + + $pendiente = $this->getPendienteCobro($cliente_id); + $credito_disponible = floatval($limite[0]->limite_credito) - $pendiente[0] - $pendiente[1] - floatval($total_pedido); + if($credito_disponible < 0) + return false; + return true; + } + return false; } public function getClienteDataFacturas($cliente_id) @@ -402,4 +419,83 @@ class ClienteModel extends \App\Models\BaseModel ->groupEnd()->get()->getResultObject(); } + + public function getPendienteCobro($cliente_id = -1) + { + + $pendiente_old = $this->getTotalPendienteOldERP($cliente_id); + + // Subconsulta para verificar la existencia en facturas_lineas + $subquery_facturas = "(SELECT 1 + FROM facturas_lineas fl + JOIN facturas f2 ON fl.factura_id = f2.id + WHERE (fl.pedido_linea_impresion_id = p.id OR fl.pedido_maquetacion_id = p.id) + AND f2.estado = 'validada')"; + + // Subconsulta para calcular el total de pedidos pendientes + $subquery_total_pedidos = $this->db->table('pedidos p') + ->select('SUM(p.total_precio)', false) + ->join('pedidos_linea pl', 'p.id = pl.pedido_id', 'left') + ->join('presupuestos pr', 'pl.presupuesto_id = pr.id', 'left') + ->where('pr.cliente_id', $cliente_id) + ->whereIn('p.estado', ['produccion', 'finalizado', 'enviado']) + ->where("NOT EXISTS $subquery_facturas", null, false) // Implementación manual de NOT EXISTS + ->getCompiledSelect(); + + // Construcción de la consulta principal + $builder = $this->db->table('(SELECT DISTINCT cliente_id FROM presupuestos UNION SELECT DISTINCT cliente_id FROM facturas) c'); + $builder->select('c.cliente_id'); + $builder->select('COALESCE(SUM(f.pendiente), 0) AS total_facturas'); + $builder->select("COALESCE(($subquery_total_pedidos), 0) AS total_pedidos", false); + $builder->select("COALESCE(SUM(f.pendiente), 0) + COALESCE(($subquery_total_pedidos), 0) AS total_pendiente", false); + $builder->join('facturas f', 'c.cliente_id = f.cliente_id AND f.deleted_at IS NULL AND f.estado = "validada"', 'left'); + $builder->where('c.cliente_id', $cliente_id); + $builder->groupBy('c.cliente_id'); + + $query = $builder->get(); + $valor = $query->getRow(); + + if ($valor) { + return [round(floatval($valor->total_pendiente), 2), round(floatval($pendiente_old), 2)]; + } else { + return [0, round(floatval($pendiente_old), 2)]; + } + + } + + private function getTotalPendienteOldERP($customer_id = -1) + { + + $db = \Config\Database::connect('old_erp'); // Conectar a olderp + $builder = $db->table('safekat.facturas f'); + $builder->select('f.customer_id'); + $builder->select('SUM(f.pendiente) + COALESCE(( + SELECT SUM(pl.total_raw) + FROM safekat.pedido_libro pl + WHERE pl.factura_id IS NULL + AND pl.estado IN ("aceptado", "finalizado", "validado") + AND pl.total_raw IS NOT NULL + AND pl.total_raw != 0 + AND pl.inc_rei IS NULL + AND pl.customer_id = f.customer_id + ), 0) AS total_pendiente'); + $builder->where('f.deleted_at IS NULL'); + $builder->where('f.estado', 'open'); + $builder->where('f.customer_id', $customer_id); + $builder->groupBy('f.customer_id'); + + $query = $builder->get(); + $valor = $query->getRow(); + /* + $builder = $db->table('vista_importe_pendiente_cliente t1') + ->select('*') + ->where('t1.customer_id', $customer_id); + $query = $builder->get(); + $valor = $query->getRow();*/ + if ($valor) { + return $valor->total_pendiente; + } else { + return 0; + } + } } diff --git a/ci4/app/Models/OrdenTrabajo/OrdenTrabajoDate.php b/ci4/app/Models/OrdenTrabajo/OrdenTrabajoDate.php index 0fb1ab3a..e99bc959 100644 --- a/ci4/app/Models/OrdenTrabajo/OrdenTrabajoDate.php +++ b/ci4/app/Models/OrdenTrabajo/OrdenTrabajoDate.php @@ -9,8 +9,8 @@ use CodeIgniter\Model; class OrdenTrabajoDate extends Model { protected $table = 'orden_trabajo_dates'; - protected $primaryKey = 'orden_trabajo_id'; - protected $useAutoIncrement = false; + protected $primaryKey = 'id'; + protected $useAutoIncrement = true; protected $returnType = OrdenTrabajoDateEntity::class; protected $useSoftDeletes = true; protected $protectFields = true; @@ -62,8 +62,8 @@ class OrdenTrabajoDate extends Model protected $allowCallbacks = true; protected $beforeInsert = []; protected $afterInsert = ["updateOrdenTrabajoUser"]; - protected $beforeUpdate = ["updateOrdenTrabajoUser"]; - protected $afterUpdate = []; + protected $beforeUpdate = []; + protected $afterUpdate = ["updateOrdenTrabajoUser"]; protected $beforeFind = []; protected $afterFind = []; protected $beforeDelete = []; @@ -106,7 +106,7 @@ class OrdenTrabajoDate extends Model $mapping = [ "fecha_encuadernado_at" => "encuadernacion_user_id", // "fecha_externo_at" => "null", - "fecha_impresion_at" => "null", + "fecha_impresion_at" => null, "pendiente_ferro_at" => "pendiente_ferro_user_id", "ferro_en_cliente_at" => "ferro_en_cliente_user_id", "ferro_ok_at" => "ferro_ok_user_id", @@ -124,9 +124,12 @@ class OrdenTrabajoDate extends Model foreach ($data as $key => $value) { if(isset($mapping[$key])){ if($value){ - $otUser->update($data["orden_trabajo_id"],[$mapping[$key] => $auth_user_id]); + $otUser->where('orden_trabajo_id',$data['orden_trabajo_id']) + ->set([$mapping[$key] => $auth_user_id]) + ->update(); } } } + return $data; } } diff --git a/ci4/app/Models/OrdenTrabajo/OrdenTrabajoUser.php b/ci4/app/Models/OrdenTrabajo/OrdenTrabajoUser.php index 2c56c3c6..1c4d239a 100644 --- a/ci4/app/Models/OrdenTrabajo/OrdenTrabajoUser.php +++ b/ci4/app/Models/OrdenTrabajo/OrdenTrabajoUser.php @@ -9,8 +9,8 @@ use CodeIgniter\Model; class OrdenTrabajoUser extends Model { protected $table = 'orden_trabajo_users'; - protected $primaryKey = 'orden_trabajo_id'; - protected $useAutoIncrement = false; + protected $primaryKey = 'id'; + protected $useAutoIncrement = true; protected $returnType = OrdenTrabajoUserEntity::class; protected $useSoftDeletes = true; protected $protectFields = true; @@ -46,31 +46,7 @@ class OrdenTrabajoUser extends Model protected bool $updateOnlyChanged = true; protected array $casts = [ - "orden_trabajo_id" => "integer", - "user_created_id" => "?integer", - "user_update_id" => "?integer", - "inaplazable_revised_change_user_id" => "?integer", - "ferro_disponible_hecho_user_id" => "?integer", - "ferro_disponible_ok_user_id" => "?integer", - "ferro_entregado_user_id" => "?integer", - "pendiente_ferro_user_id" => "?integer", - "ferro_en_cliente_user_id" => "?integer", - "ferro_ok_user_id" => "?integer", - "interior_bn_user_id" => "?integer", - "interior_color_user_id" => "?integer", - "preparacion_interior_user_id" => "?integer", - "cubierta_user_id" => "?integer", - "plastificado_user_id" => "?integer", - "encuadernacion_user_id" => "?integer", - "corte_user_id" => "?integer", - "embalaje_user_id" => "?integer", - "entrada_manipulado_user_id" => "?integer", - "pre_formato_user_id" => "?integer", - "pre_lomo_user_id" => "?integer", - "pre_solapa_user_id" => "?integer", - "pre_codbarras_user_id" => "?integer", - "pre_imposicion_user_id" => "?integer", - "pre_imprimir_user_id" => "?integer" + ]; protected array $castHandlers = []; diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index c6ee31fb..1cf7524c 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Controllers\Pedidos\Pedido; use CodeIgniter\Config\BaseService; use App\Models\Configuracion\MaquinasTarifasImpresionModel; @@ -1877,7 +1878,7 @@ class PresupuestoService extends BaseService $data_pedido = [ 'total_precio' => $datos_presupuesto->total_aceptado, 'total_tirada' => $datos_presupuesto->tirada, - 'estado' => $model_cliente->creditoDisponible($datos_presupuesto->cliente_id) ? "produccion" : "validacion", + 'estado' => $model_cliente->creditoDisponible($datos_presupuesto->cliente_id, $datos_presupuesto->total_aceptado) ? "produccion" : "validacion", 'user_created_id' => auth()->user()->id, 'user_updated_id' => auth()->user()->id, ]; @@ -1896,6 +1897,9 @@ class PresupuestoService extends BaseService } if ($id_linea != 0 && $pedido_id != 0) { + if($data_pedido['estado'] == "produccion"){ + $response = (new Pedido())->to_produccion($pedido_id); + } return true; } return false; diff --git a/ci4/app/Services/ProductionService.php b/ci4/app/Services/ProductionService.php index 3098d825..0e84042a 100644 --- a/ci4/app/Services/ProductionService.php +++ b/ci4/app/Services/ProductionService.php @@ -121,10 +121,10 @@ class ProductionService extends BaseService "total_tirada" => $this->pedido->total_tirada, "total_precio" => $this->pedido->total_precio ]; - $ot_id = $this->otModel->insert($data); - $this->init($ot_id); - // $this->storeOrdenTrabajoUsers(); - // $this->storeOrdenTrabajoDates(); + $id = $this->otModel->insert($data); + $this->init($id); + $this->storeOrdenTrabajoUsers(); + $this->storeOrdenTrabajoDates(); $this->storeAllTareas(); return $this->ot; } diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php index 9af77005..85711c1b 100644 --- a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php +++ b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php @@ -56,7 +56,19 @@ - + estado == 'validacion' && (!(auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')))): ?> +
+
+
+
+ + +
+ + + user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))) : ?>
diff --git a/httpdocs/assets/js/safekat/pages/produccion/to_prod.js b/httpdocs/assets/js/safekat/pages/produccion/to_prod.js index 125c5254..4329b2fb 100644 --- a/httpdocs/assets/js/safekat/pages/produccion/to_prod.js +++ b/httpdocs/assets/js/safekat/pages/produccion/to_prod.js @@ -23,6 +23,9 @@ $(() => { null, null, (response) => { + if(response.status){ + location.reload() + } Swal.fire({ title: response.message, icon: 'success',