Jacek Kowalski
2024-10-24 2b276040c31fb8cab7ff19e968dab4064450d74b
src/PaymentSynchronizer.php
@@ -2,29 +2,22 @@
namespace SIPL\UCRM\wFirma;
use \Webit\WFirmaSDK\Invoices as Invoices;
use \Webit\WFirmaSDK\Payments as Payments;
use Webit\WFirmaSDK\Invoices as Invoices;
use Webit\WFirmaSDK\Payments as Payments;
class PaymentSynchronizer extends Synchronizer {
   protected $ucrmMainDir;
   function __construct(\Webit\WFirmaSDK\Entity\ModuleApiFactory $wFirmaApi, UcrmHelper $ucrmHelper) {
      parent::__construct($wFirmaApi, $ucrmHelper);
      $backtrace = debug_backtrace();
      $backtrace = end($backtrace);
      // (...)/web/_plugins/wfirma/public.php
      $this->ucrmMainDir = dirname(dirname(dirname(dirname($backtrace['file']))));
   }
   function comparePayment(Payments\Payment $p1, Payments\Payment $p2) {
   function comparePayment(Payments\Payment $p1, Payments\Payment $p2): int {
      return
         [$p1->objectName(), $p1->objectId(), $p1->amount()->value(), $p1->date()->format('Y-m-d'), $p1->paymentMethod()]
         <=>
         [$p2->objectName(), $p2->objectId(), $p2->amount()->value(), $p2->date()->format('Y-m-d'), $p2->paymentMethod()];
   }
   function synchronize(int $ucrmPaymentId) {
   function synchronize(int $ucrmPaymentId): bool {
      $crm = $this->helper->getApi();
      $wFirmaPaymentsApi = $this->wfirma->paymentsApi();
@@ -170,4 +163,37 @@
      return $changed;
   }
   function delete(array $paymentData): bool {
      $wFirmaPaymentsApi = $this->wfirma->paymentsApi();
      $paymentAttributeId = $this->helper->getAttributes()->getIdForCode('payment');
      $wFirmaIds = '';
      foreach ($paymentData['attributes'] as $attribute) {
         if ($attribute['customAttributeId'] === $paymentAttributeId) {
            $wFirmaIds = $attribute['value'];
         }
      }
      if (strlen($wFirmaIds) > 0) {
         $wFirmaIds = explode(',', $wFirmaIds);
      } else {
         $wFirmaIds = [];
      }
      $changed = FALSE;
      foreach($wFirmaIds as $wFirmaId) {
         try {
            $payment = $wFirmaPaymentsApi->get(
               Payments\PaymentId::create($wFirmaId)
            );
            $wFirmaPaymentsApi->delete($payment->id());
            $changed = TRUE;
         } catch(\Webit\WFirmaSDK\Entity\Exception\NotFoundException $e) {
            // do nothing
         }
      }
      return $changed;
   }
}