añadida la funcionalidad de borrar en cascada las tarifas envio. Corregido error en editor (campo nombre)

This commit is contained in:
Jaime Jimenez
2023-09-05 21:26:32 +02:00
parent 5565ced494
commit d2a524e5df
4 changed files with 65 additions and 39 deletions

View File

@ -12,6 +12,8 @@ use App\Models\Compras\ProveedorModel;
use App\Models\Compras\ProveedorTipoModel;
use App\Models\Tarifas\TarifaEnvioModel;
use App\Models\Tarifas\TarifaEnvioPrecioModel;
use App\Models\Tarifas\TarifaEnvioZonaModel;
class Tarifasenvios extends \App\Controllers\GoBaseResourceController {
@ -226,6 +228,48 @@ class Tarifasenvios extends \App\Controllers\GoBaseResourceController {
} // end function edit(...)
// JJO
public function delete($id = null)
{
if (!empty(static::$pluralObjectNameCc) && !empty(static::$singularObjectNameCc)) {
$objName = mb_strtolower(lang(ucfirst(static::$pluralObjectNameCc).'.'.static::$singularObjectNameCc));
} else {
$objName = lang('Basic.global.record');
}
if (!$this->soft_delete){
if (!$this->model->delete($id)) {
return $this->failNotFound(lang('Basic.global.deleteError', [$objName]));
}
}
else{
$datetime = (new \CodeIgniter\I18n\Time("now"));
$zonaModel = new TarifaEnvioZonaModel();
$zonaResult = $zonaModel->removeAllZonasLineas($id, $datetime, $this->delete_flag);
$precioModel = new TarifaEnvioPrecioModel();
$precioResult = $precioModel->removeAllPrecioLineas($id, $datetime, $this->delete_flag);
$rawResult = $this->model->where('id',$id)
->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'),
'is_deleted' => $this->delete_flag])
->update();
if (!$rawResult && !$precioResult && !$zonaResult) {
return $this->failNotFound(lang('Basic.global.deleteError', [$objName]));
}
}
// $message = lang('Basic.global.deleteSuccess', [$objName]); IMN commented
$message = lang('Basic.global.deleteSuccess', [lang('Basic.global.record')]);
$response = $this->respondDeleted(['id' => $id, 'msg' => $message]);
return $response;
}
public function datatable() {
if ($this->request->isAJAX()) {

View File

@ -209,43 +209,6 @@ class Tarifasenvioszonas extends \App\Controllers\GoBaseResourceController {
} // end function edit(...)
public function delete($id = null)
{
if (!empty(static::$pluralObjectNameCc) && !empty(static::$singularObjectNameCc)) {
$objName = mb_strtolower(lang(ucfirst(static::$pluralObjectNameCc).'.'.static::$singularObjectNameCc));
} else {
$objName = lang('Basic.global.record');
}
if (!$this->soft_delete){
if (!$this->model->delete($id)) {
return $this->failNotFound(lang('Basic.global.deleteError', [$objName]));
}
}
else{
$datetime = (new \CodeIgniter\I18n\Time("now"));
$precioModel = new TarifaEnvioPrecioModel();
$precioResult = $precioModel->removeAllPrecioLineas($id, $datetime, $this->delete_flag);
$rawResult = $this->model->where('id',$id)
->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'),
'is_deleted' => $this->delete_flag])
->update();
if (!$rawResult && !$precioResult) {
return $this->failNotFound(lang('Basic.global.deleteError', [$objName]));
}
}
// $message = lang('Basic.global.deleteSuccess', [$objName]); IMN commented
$message = lang('Basic.global.deleteSuccess', [lang('Basic.global.record')]);
$response = $this->respondDeleted(['id' => $id, 'msg' => $message]);
return $response;
}
public function datatable_editor()
{
if ($this->request->isAJAX()) {
@ -255,6 +218,13 @@ class Tarifasenvioszonas extends \App\Controllers\GoBaseResourceController {
// Build our Editor instance and process the data coming from _POST
$response = Editor::inst($db, 'tarifas_envios_zonas')
->fields(
Field::inst('nombre')
->validator('Validate::required', array(
'message' => lang('TarifasEnviosZonas.validation.nombre.required'))
)
->validator(Validate::maxLen(50), array(
'message' => lang('TarifasEnviosZonas.validation.nombre.max_length'))
),
Field::inst('cp_inicial')
->validator('Validate::required', array(
'message' => lang('TarifasEnviosZonas.validation.cp_inicial.required'))

View File

@ -196,13 +196,13 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
return "";
}
public function removeAllPrecioLineas($zona_id = -1, $datetime = null, $delete_flag=1){
public function removeAllPrecioLineas($tarifa_envio_id = -1, $datetime = null, $delete_flag=1){
$builder = $this->db
->table($this->table)
->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'),
'is_deleted' => $delete_flag])
->where('tarifa_envio_id',$zona_id)
->where('tarifa_envio_id',$tarifa_envio_id)
->update();
return $builder;

View File

@ -125,4 +125,16 @@ class TarifaEnvioZonaModel extends \App\Models\GoBaseModel
->orLike("t1.importe_fijo", $search)
->groupEnd();
}
public function removeAllZonasLineas($tarifa_envio_id = -1, $datetime = null, $delete_flag=1){
$builder = $this->db
->table($this->table)
->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'),
'is_deleted' => $delete_flag])
->where('tarifa_envio_id',$tarifa_envio_id)
->update();
return $builder;
}
}