From d4e2fb8e1f4da20beaf863c0e589bbf1ca14611e Mon Sep 17 00:00:00 2001 From: Beppe Date: Fri, 9 Aug 2024 17:00:26 +0200 Subject: [PATCH] Migliorie API interventi --- modules/interventi/src/API/v1/Articoli.php | 68 ----------- modules/interventi/src/API/v1/Righe.php | 128 +++++++++++++++++++++ 2 files changed, 128 insertions(+), 68 deletions(-) delete mode 100755 modules/interventi/src/API/v1/Articoli.php create mode 100644 modules/interventi/src/API/v1/Righe.php diff --git a/modules/interventi/src/API/v1/Articoli.php b/modules/interventi/src/API/v1/Articoli.php deleted file mode 100755 index ec220f638..000000000 --- a/modules/interventi/src/API/v1/Articoli.php +++ /dev/null @@ -1,68 +0,0 @@ -. - */ - -namespace Modules\Interventi\API\v1; - -use API\Interfaces\CreateInterface; -use API\Interfaces\RetrieveInterface; -use API\Resource; -use Modules\Articoli\Articolo as ArticoloOriginale; -use Modules\Interventi\Components\Articolo; -use Modules\Interventi\Intervento; - -class Articoli extends Resource implements RetrieveInterface, CreateInterface -{ - public function retrieve($request) - { - $table = 'in_righe_interventi'; - - $select = [ - 'in_righe_interventi.id', - 'in_righe_interventi.idarticolo AS id_articolo', - 'in_righe_interventi.idintervento AS id_intervento', - 'in_righe_interventi.qta', - 'in_righe_interventi.created_at as data', - ]; - - $where = [['in_righe_interventi.idarticolo', '!=', null], ['in_righe_interventi.idintervento', '=', $request['id_intervento']]]; - - return [ - 'table' => $table, - 'select' => $select, - 'where' => $where, - ]; - } - - public function create($request) - { - $data = $request['data']; - - $originale = ArticoloOriginale::find($data['id_articolo']); - $intervento = Intervento::find($data['id_intervento']); - $articolo = Articolo::build($intervento, $originale); - - $articolo->qta = $data['qta']; - $articolo->um = $data['um']; - - $articolo->prezzo_unitario = $originale->prezzo_vendita; - $articolo->costo_unitario = $originale->prezzo_acquisto; - - $articolo->save(); - } -} diff --git a/modules/interventi/src/API/v1/Righe.php b/modules/interventi/src/API/v1/Righe.php new file mode 100644 index 000000000..8ba324977 --- /dev/null +++ b/modules/interventi/src/API/v1/Righe.php @@ -0,0 +1,128 @@ +. + */ + +namespace Modules\Interventi\API\v1; + +use API\Interfaces\CreateInterface; +use API\Interfaces\RetrieveInterface; +use API\Resource; +use Modules\Articoli\Articolo as ArticoloOriginale; +use Modules\Interventi\Components\Articolo; +use Modules\Interventi\Components\Riga; +use Modules\Interventi\Components\Descrizione; +use Modules\Interventi\Intervento; + +class Righe extends Resource implements RetrieveInterface, CreateInterface +{ + public function retrieve($request) + { + $table = 'in_righe_interventi'; + + $select = [ + 'in_righe_interventi.id', + 'in_righe_interventi.idarticolo AS id_articolo', + 'in_righe_interventi.idintervento AS id_intervento', + 'in_righe_interventi.descrizione', + 'in_righe_interventi.qta', + 'in_righe_interventi.created_at as data', + ]; + + $where = [['in_righe_interventi.idintervento', '=', $request['id_intervento']]]; + + return [ + 'table' => $table, + 'select' => $select, + 'where' => $where, + ]; + } + + public function create($request) + { + $data = $request['data']; + $data['qta'] = ($data['qta'] ? $data['qta'] : 1); + + $intervento = Intervento::find($data['id_intervento']); + $originale = ArticoloOriginale::find($data['id_articolo']); + if ($data['is_articolo'] && !empty($originale)) { + $riga = Articolo::build($intervento, $originale); + + $riga->descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione); + $riga->qta = $data['qta']; + $riga->um = $data['um']; + $riga->costo_unitario = $originale->prezzo_acquisto; + if( $originale->prezzo_vendita>0 ){ + $idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita')); + $riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva); + }else{ + $riga->prezzo_unitario = 0; + } + } elseif ($data['is_descrizione']) { + $riga = Descrizione::build($intervento); + + $riga->qta = 0; + $riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); + } else { + $riga = Riga::build($intervento); + + $riga->qta = $data['qta']; + $riga->um = $data['um']; + $riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); + $riga->costo_unitario = 0; + $riga->setPrezzoUnitario(0, setting('Iva predefinita')); + } + + $riga->save(); + } + + public function delete($request) + { + $riga = Articolo::find($request['id']) ?: Riga::find($request['id']); + $riga = $riga ?: Descrizione::find($request['id']); + $riga->delete(); + } + + public function update($request) + { + $data = $request['data']; + $data['qta'] = ($data['qta'] ? $data['qta'] : 1); + + $originale = ArticoloOriginale::find($data['id_articolo']); + $riga = Articolo::find($data['id_riga']) ?: Riga::find($data['id_riga']); + + $riga->qta = $data['qta']; + if(!empty($data['id_articolo']) && !empty($originale)){ + $descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione); + $descrizione = ($descrizione ? $descrizione : '-'); + + $riga->descrizione = $descrizione; + $riga->idarticolo = $originale->id; + $riga->costo_unitario = $originale->prezzo_acquisto; + $idiva = ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita')); + $riga->setPrezzoUnitario($originale->prezzo_vendita, $idiva); + }else{ + $riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); + $riga->costo_unitario = 0; + $riga->setPrezzoUnitario(0, setting('Iva predefinita')); + } + + $riga->um = $data['um'] ?: null; + $riga->save(); + } + +}