From 64b225bce5d8d66222a1311c8d201f399ca9d6b8 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Tue, 17 Feb 2026 17:47:26 +0000
Subject: [PATCH] Update webit/w-firma-api to version 3

---
 src/PaymentSynchronizer.php |   50 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/src/PaymentSynchronizer.php b/src/PaymentSynchronizer.php
index c924d27..6037f55 100644
--- a/src/PaymentSynchronizer.php
+++ b/src/PaymentSynchronizer.php
@@ -2,32 +2,29 @@
 
 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 {
-	protected $wfirma;
-	protected $helper;
+class PaymentSynchronizer extends Synchronizer {
 	protected $ucrmMainDir;
 
 	function __construct(\Webit\WFirmaSDK\Entity\ModuleApiFactory $wFirmaApi, UcrmHelper $ucrmHelper) {
-		$this->wfirma = $wFirmaApi;
-		$this->helper = $ucrmHelper;
+		parent::__construct($wFirmaApi, $ucrmHelper);
 
 		$backtrace = debug_backtrace();
 		$backtrace = end($backtrace);
 		// (...)/web/_plugins/wfirma/public.php
-		$this->ucrmMainDir = dirname(dirname(dirname(dirname($backtrace['file']))));
+		$this->ucrmMainDir = dirname($backtrace['file'], 4);
 	}
 
-	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($ucrmPaymentId) {
+	function synchronize(int $ucrmPaymentId): bool {
 		$crm = $this->helper->getApi();
 		$wFirmaPaymentsApi = $this->wfirma->paymentsApi();
 
@@ -173,4 +170,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;
+	}
 }

--
Gitblit v1.10.0