Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Modules\ScanArticle\Wrapper;
|
||||
|
||||
use Xentral\Components\Database\Database;
|
||||
use erpAPI;
|
||||
use Xentral\Modules\ScanArticle\Exception\InvalidArgumentException;
|
||||
|
||||
class PriceWrapper
|
||||
{
|
||||
/** @var erpAPI $erp */
|
||||
private $erp;
|
||||
|
||||
/** @var Database $db */
|
||||
private $db;
|
||||
|
||||
/**
|
||||
* @param erpAPI $erp
|
||||
* @param Database $database
|
||||
*/
|
||||
public function __construct(erpAPI $erp, Database $database)
|
||||
{
|
||||
$this->erp = $erp;
|
||||
$this->db = $database;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $articleId
|
||||
* @param float $amount
|
||||
* @param int $adressId
|
||||
* @param string $currency
|
||||
*
|
||||
* @return int|mixed|null
|
||||
*/
|
||||
private function getSellingPrice(
|
||||
$articleId,
|
||||
$amount,
|
||||
$adressId = 0,
|
||||
$currency = ''
|
||||
) {
|
||||
$returnCurrencyRef = '';
|
||||
|
||||
return $this->erp->GetVerkaufspreis(
|
||||
$articleId,
|
||||
$amount,
|
||||
$adressId,
|
||||
$currency,
|
||||
$returnCurrencyRef,
|
||||
false,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $articleId
|
||||
* @param float $amount
|
||||
* @param int $orderId
|
||||
* @param string $currency
|
||||
*
|
||||
* @return int|mixed|null
|
||||
*/
|
||||
public function getOrderSellingPrice(
|
||||
$articleId,
|
||||
$amount,
|
||||
$orderId,
|
||||
$currency = ''
|
||||
) {
|
||||
$adressId = $this->db->fetchValue(
|
||||
"SELECT `adresse` FROM `auftrag` WHERE id = :orderId",
|
||||
['orderId' => $orderId]
|
||||
);
|
||||
|
||||
return $this->getSellingPrice(
|
||||
$articleId,
|
||||
$amount,
|
||||
$adressId,
|
||||
$currency
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $articleId
|
||||
* @param float $amount
|
||||
* @param int $purchaseOrderId
|
||||
*
|
||||
* @return int | null
|
||||
*/
|
||||
private function getPurchasePriceId($articleId, $amount, $purchaseOrderId)
|
||||
{
|
||||
$supplierId = $this->db->fetchValue(
|
||||
"SELECT `adresse` FROM `bestellung` WHERE id = :purchaseOrderId",
|
||||
['purchaseOrderId' => $purchaseOrderId]
|
||||
);
|
||||
|
||||
if (!empty($supplierId)) {
|
||||
$purchasePriceId = $this->erp->Einkaufspreis($articleId, $amount, $supplierId);
|
||||
if (!empty($purchasePriceId)) {
|
||||
return $purchasePriceId;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $articleId
|
||||
* @param float $amount
|
||||
* @param int $purchaseOrderId
|
||||
*
|
||||
* @return float | null
|
||||
*/
|
||||
public function getPurchaseOrderPurchasePrice($articleId, $amount, $purchaseOrderId)
|
||||
{
|
||||
$purchasePriceId = $this->getPurchasePriceId($articleId, $amount, $purchaseOrderId);
|
||||
|
||||
if (!empty($purchasePriceId)) {
|
||||
return (float)$this->db->fetchValue(
|
||||
"SELECT `preis` FROM `einkaufspreise` WHERE id = :purchasePriceId",
|
||||
['purchasePriceId' => $purchasePriceId]
|
||||
);
|
||||
} else {
|
||||
throw new InvalidArgumentException('Purchase-Order-Id can not be empty');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user