diff --git a/modules/ddt/src/API/v1/DDTS.php b/modules/ddt/src/API/v1/DDTS.php new file mode 100644 index 000000000..bdb875743 --- /dev/null +++ b/modules/ddt/src/API/v1/DDTS.php @@ -0,0 +1,113 @@ +. + */ + +namespace Modules\DDT\API\v1; + +use API\Interfaces\CreateInterface; +use API\Interfaces\RetrieveInterface; +use API\Interfaces\UpdateInterface; +use API\Resource; +use Modules\Anagrafiche\Anagrafica; +use Modules\DDT\DDT; +use Modules\DDT\Tipo; + +class DDTS extends Resource implements RetrieveInterface, UpdateInterface, CreateInterface +{ + public function retrieve($request) + { + $table = 'dt_ddt'; + + $select = [ + 'dt_ddt.*', + 'dt_ddt.data', + 'dt_statiddt_lang.title AS stato', + ]; + + $joins[] = [ + 'dt_statiddt', + 'dt_statiddt.id', + 'dt_ddt.idstatoddt', + ]; + + $joins[] = [ + 'dt_statiddt_lang', + 'dt_statiddt_lang.id_record', + 'dt_statiddt.id', + ]; + + $where = []; + $where[] = ['dt_statiddt_lang.id_lang', '=', \Models\Locale::getDefault()->id]; + + $whereraw = []; + + $group = 'dt_ddt.id'; + + return [ + 'table' => $table, + 'select' => $select, + 'joins' => $joins, + 'where' => $where, + 'whereraw' => $whereraw, + 'group' => $group, + ]; + } + + public function create($request) + { + $data = $request['data']; + + $anagrafica = Anagrafica::find($data['id_anagrafica']); + $tipo = Tipo::find($data['id_tipo']); + + $ddt = DDT::build($anagrafica, $tipo, $data['data'], $data['id_segment']); + + $ddt->idstatoddt = $data['id_stato']; + $ddt->idcausalet = $data['idcausale']; + $ddt->idsede_partenza = $data['idsede_partenza']; + $ddt->idsede_destinazione = $data['idsede_destinazione']; + $ddt->save(); + + return [ + 'id' => $ddt->id, + 'numero_esterno' => $ddt->numero_esterno, + ]; + } + + public function update($request) + { + $data = $request['data']; + + $ddt = DDT::find($data['id']); + + $ddt->data = $data['data']; + $ddt->idstatoddt = $data['id_stato']; + $ddt->idcausalet = $data['idcausale']; + $ddt->idanagrafica = $data['id_anagrafica']; + $ddt->numero_esterno = $data['numero_esterno']; + $ddt->idsede_partenza = $data['idsede_partenza']; + $ddt->idsede_destinazione = $data['idsede_destinazione']; + $ddt->save(); + } + + public function delete($request) + { + $ddt = DDT::find($request['id']); + $ddt->delete(); + } +} diff --git a/modules/ddt/src/API/v1/Righe.php b/modules/ddt/src/API/v1/Righe.php new file mode 100644 index 000000000..6c058fa45 --- /dev/null +++ b/modules/ddt/src/API/v1/Righe.php @@ -0,0 +1,134 @@ +. + */ + +namespace Modules\DDT\API\v1; + +use API\Interfaces\CreateInterface; +use API\Interfaces\RetrieveInterface; +use API\Resource; +use Modules\Articoli\Articolo as ArticoloOriginale; +use Modules\DDT\Components\Articolo; +use Modules\DDT\Components\Descrizione; +use Modules\DDT\Components\Riga; +use Modules\DDT\DDT; + +class Righe extends Resource implements RetrieveInterface, CreateInterface +{ + public function retrieve($request) + { + $table = 'dt_righe_ddt'; + + $select = [ + 'dt_righe_ddt.id', + 'dt_righe_ddt.idarticolo AS id_articolo', + 'dt_righe_ddt.idddt AS id_ddt', + 'dt_righe_ddt.descrizione', + 'dt_righe_ddt.qta', + 'dt_righe_ddt.created_at as data', + ]; + + $where = [['dt_righe_ddt.idddt', '=', $request['id_ddt']]]; + + return [ + 'table' => $table, + 'select' => $select, + 'where' => $where, + ]; + } + + public function create($request) + { + $data = $request['data']; + $data['qta'] = ($data['qta']>0 ? $data['qta'] : 1); + + $originale = ArticoloOriginale::find($data['id_articolo']); + $ddt = DDT::find($data['id_ddt']); + + if( !empty($data['is_descrizione']) ){ + $riga = Descrizione::build($ddt); + $riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); + $riga->qta = 0; + }elseif(!empty($data['id_articolo']) && !empty($originale)){ + $riga = Articolo::build($ddt, $originale); + + 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; + } + $riga->costo_unitario = $originale->prezzo_acquisto; + $riga->qta = $data['qta']; + $riga->descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione); + }else{ + $riga = Riga::build($ddt); + $riga->qta = $data['qta']; + $riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); + $riga->costo_unitario = 0; + $riga->setPrezzoUnitario(0, setting('Iva predefinita')); + } + + $riga->um = $data['um'] ?: null; + $riga->save(); + } + + public function update($request) + { + $data = $request['data']; + $data['qta'] = ($data['qta']>0 ? $data['qta'] : 1); + + $originale = ArticoloOriginale::find($data['id_articolo']); + + $riga = Articolo::find($data['id_riga']) ?: Riga::find($data['id_riga']); + $riga = $riga ?: Descrizione::find($data['id_riga']); + + $riga->is_descrizione = 0; + $riga->qta = $data['qta']; + if( !empty($data['is_descrizione']) ){ + $riga->qta = 0; + $riga->is_descrizione = 1; + $riga->descrizione = ($data['descrizione'] ? $data['descrizione'] : '-'); + }elseif(!empty($data['id_articolo']) && !empty($originale)){ + $descrizione = (!empty($data['descrizione']) ? $data['descrizione'] : $originale->descrizione); + $descrizione = ($descrizione ? $descrizione : '-'); + + $riga->descrizione = ($descrizione ? $descrizione : '-'); + $riga->costo_unitario = $originale->prezzo_acquisto; + $riga->idarticolo = $originale->id; + $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(); + } + + public function delete($request) + { + $riga = Articolo::find($request['id']) ?: Riga::find($request['id']); + $riga = $riga ?: Descrizione::find($request['id']); + $riga->delete(); + + ricalcola_costiagg_ddt($riga->idddt); + } +}