diff --git a/Controller/EditLiquidacionComision.php b/Controller/EditLiquidacionComision.php index 7fd56a3..1b551f5 100644 --- a/Controller/EditLiquidacionComision.php +++ b/Controller/EditLiquidacionComision.php @@ -1,7 +1,7 @@ + * Copyright (C) 2022-2026 Carlos Garcia Gomez * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -20,7 +20,6 @@ namespace FacturaScripts\Plugins\Comisiones\Controller; use Exception; -use FacturaScripts\Core\Base\DataBase\DataBaseWhere; use FacturaScripts\Core\Lib\Calculator; use FacturaScripts\Core\Lib\ExtendedController\BaseView; use FacturaScripts\Core\Lib\ExtendedController\EditController; @@ -214,44 +213,44 @@ protected function getInvoicesFromDataForm(array $data): array * * @param array $data * - * @return DataBaseWhere[] + * @return Where[] */ protected function getInvoicesWhere(array $data): array { // Basic data filter $where = [ - new DataBaseWhere('facturascli.idempresa', $data['idempresa']), - new DataBaseWhere('facturascli.codserie', $data['codserie']), - new DataBaseWhere('facturascli.codagente', $data['codagente']), + Where::column('facturascli.idempresa', $data['idempresa']), + Where::column('facturascli.codserie', $data['codserie']), + Where::column('facturascli.codagente', $data['codagente']), ]; // Date filter if (false === empty($data['datefrom'])) { - $where[] = new DataBaseWhere('facturascli.fecha', $data['datefrom'], '>='); + $where[] = Where::column('facturascli.fecha', $data['datefrom'], '>='); } if (false === empty($data['dateto'])) { - $where[] = new DataBaseWhere('facturascli.fecha', $data['dateto'], '<='); + $where[] = Where::column('facturascli.fecha', $data['dateto'], '<='); } // Status payment filter if ($data['status'] === self::INSERT_STATUS_CHARGED) { - $where[] = new DataBaseWhere('facturascli.pagada', true); + $where[] = Where::column('facturascli.pagada', true); } // Payment source filter switch ($data['domiciled']) { case self::INSERT_DOMICILED_DOMICILED: - $where[] = new DataBaseWhere('formaspago.domiciliado', true); + $where[] = Where::column('formaspago.domiciliado', true); break; case self::INSERT_DOMICILED_WITHOUT: - $where[] = new DataBaseWhere('formaspago.domiciliado', false); + $where[] = Where::column('formaspago.domiciliado', false); break; } // Customer filter if (false === empty($data['codcliente'])) { - $where[] = new DataBaseWhere('facturascli.codcliente', $data['codcliente']); + $where[] = Where::column('facturascli.codcliente', $data['codcliente']); } // Return completed filter @@ -318,7 +317,7 @@ protected function loadDataSettledInvoice($view): void // Load view data $view->loadData('', [ - new DataBaseWhere('facturascli.idliquidacion', $idsettled), + Where::column('facturascli.idliquidacion', $idsettled), ]); } diff --git a/Mod/CalculatorMod.php b/Mod/CalculatorMod.php index e7ada49..adcefd6 100644 --- a/Mod/CalculatorMod.php +++ b/Mod/CalculatorMod.php @@ -1,7 +1,7 @@ + * Copyright (C) 2022-2026 Carlos Garcia Gomez * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -20,11 +20,11 @@ namespace FacturaScripts\Plugins\Comisiones\Mod; use Exception; -use FacturaScripts\Core\Contract\CalculatorModInterface; use FacturaScripts\Core\Model\Base\BusinessDocument; use FacturaScripts\Core\Model\Base\BusinessDocumentLine; use FacturaScripts\Core\Model\Base\SalesDocument; use FacturaScripts\Core\Model\Base\SalesDocumentLine; +use FacturaScripts\Core\Template\CalculatorModClass; use FacturaScripts\Core\Tools; use FacturaScripts\Core\Where; use FacturaScripts\Dinamic\Model\Comision; @@ -38,7 +38,7 @@ * @author Carlos Garcia Gomez * @author Daniel Fernández Giménez */ -class CalculatorMod implements CalculatorModInterface +class CalculatorMod extends CalculatorModClass { /** * Commission ratio. @@ -61,7 +61,7 @@ class CalculatorMod implements CalculatorModInterface */ protected $settlement; - public function apply(BusinessDocument &$doc, array &$lines): bool + public function apply(BusinessDocument $doc, array &$lines): string { if ($doc instanceof SalesDocument) { // cargamos comisiones y penalizaciones aplicables @@ -73,14 +73,14 @@ public function apply(BusinessDocument &$doc, array &$lines): bool $this->settlement->load($doc->idliquidacion); } } - return true; + return $this->done(); } - public function calculate(BusinessDocument &$doc, array &$lines): bool + public function calculate(BusinessDocument $doc, array &$lines): string { // si no hay totalcomision o ya hay una liquidación facturada, no se calcula la comisión if (false === $doc->hasColumn('totalcomision') || $this->isInvoiced($doc)) { - return true; + return $this->done(); } // calculamos el total de comisiones @@ -92,50 +92,50 @@ public function calculate(BusinessDocument &$doc, array &$lines): bool $decimals = Tools::settings('default', 'decimals', 2); $doc->totalcomision = round($totalCommission, $decimals); - return true; + return $this->done(); } - public function calculateLine(BusinessDocument $doc, BusinessDocumentLine &$line): bool + public function calculateLine(BusinessDocument $doc, BusinessDocumentLine $line): string { // si no hay porcomision o ya hay una liquidación facturada, no se calcula la comisión if (false === $line->hasColumn('porcomision') || $this->isInvoiced($doc)) { - return true; + return $this->done(); } // si se ha seleccionado editar la comisión no la procesamos if ($doc->hasColumn('editcomision') && $doc->editcomision) { - return true; + return $this->done(); } // calculamos el porcentaje de comisión $line->porcomision = $line->suplido ? 0.0 : $this->getCommission($line); - return true; + return $this->done(); } - public function clear(BusinessDocument &$doc, array &$lines): bool + public function clear(BusinessDocument $doc, array &$lines): string { // si no hay totalcomision o ya hay una liquidación facturada, no se calcula la comisión if (false === $doc->hasColumn('totalcomision') || $this->isInvoiced($doc)) { - return true; + return $this->done(); } $doc->totalcomision = 0.0; // si se ha seleccionado editar la comisión no la procesamos if ($doc->hasColumn('editcomision') || $doc->editcomision) { - return true; + return $this->done(); } foreach ($lines as $line) { $line->porcomision = 0.0; } - return true; + return $this->done(); } - public function getSubtotals(array &$subtotals, BusinessDocument $doc, array $lines): bool + public function updateSubtotals(array &$subtotals, BusinessDocument $doc, array $lines): string { - return true; + return $this->done(); } protected function getCommission(SalesDocumentLine $line): float @@ -254,7 +254,7 @@ protected function loadPenalties(int $idempresa, ?string $codagente): void } } - private function isInvoiced(BusinessDocument &$doc): bool + private function isInvoiced(BusinessDocument $doc): bool { return $doc->hasColumn('idliquidacion') && isset($this->settlement) diff --git a/Model/Join/LiquidacionComisionFactura.php b/Model/Join/LiquidacionComisionFactura.php index 375f08f..2c49fd6 100644 --- a/Model/Join/LiquidacionComisionFactura.php +++ b/Model/Join/LiquidacionComisionFactura.php @@ -1,7 +1,7 @@ + * Copyright (C) 2022-2026 Carlos Garcia Gomez * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -20,8 +20,8 @@ namespace FacturaScripts\Plugins\Comisiones\Model\Join; use Exception; -use FacturaScripts\Core\Base\DataBase\DataBaseWhere; use FacturaScripts\Core\KernelException; +use FacturaScripts\Core\Where; use FacturaScripts\Core\Model\Base\JoinModel; use FacturaScripts\Core\Tools; use FacturaScripts\Dinamic\Model\FacturaCliente; @@ -53,12 +53,12 @@ public function __construct(array $data = []) * according to the where filter. * * @param int $settled - * @param DataBaseWhere[] $where + * @param Where[] $where * @throws KernelException */ public function addInvoiceToSettle(int $settled, array $where): void { - $where[] = new DataBaseWhere('facturascli.idliquidacion', null, 'IS'); + $where[] = Where::column('facturascli.idliquidacion', null, 'IS'); $invoices = $this->all($where); if (empty($invoices)) { return; diff --git a/facturascripts.ini b/facturascripts.ini index e986729..b3a663b 100644 --- a/facturascripts.ini +++ b/facturascripts.ini @@ -1,4 +1,4 @@ name = 'Comisiones' description = 'Añade comisiones y liquidaciones a los agentes.' version = 2.24 -min_version = 2025.61 +min_version = 2026