Skip to content
Code-Schnipsel Gruppen Projekte
Commit 9ab25d9a erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

fix: Brutto Netto Kontrolliert -> Benutzer richtig durchgeschläust; ERP...

fix: Brutto Netto Kontrolliert -> Benutzer richtig durchgeschläust; ERP Address -> equivalent zu User Address
Übergeordneter 12ce481b
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
Keine zugehörigen Merge Requests gefunden
......@@ -146,6 +146,8 @@ public function __construct($attributes = array())
$this->vatArray = $calc['vatArray'];
$this->isEuVat = $calc['isEuVat'];
$this->isNetto = $calc['isNetto'];
$this->calculated = true;
}
}
......@@ -279,7 +281,8 @@ public function getUser()
*/
public function setUser(QUI\Interfaces\Users\User $User)
{
$this->User = $User;
$this->calculated = false;
$this->User = $User;
}
/**
......@@ -377,6 +380,10 @@ public function calc($Instance = null)
$Calc = Calc::getInstance();
}
if ($this->getUser()) {
$Calc->setUser($this->getUser());
}
$Calc->calcArticlePrice($this, function ($data) use ($self) {
$self->price = $data['price'];
$self->basisPrice = $data['basisPrice'];
......@@ -417,28 +424,42 @@ public function toArray()
return array(
// article data
'title' => $this->getTitle(),
'articleNo' => $this->getArticleNo(),
'description' => $this->getDescription(),
'unitPrice' => $this->getUnitPrice(),
'quantity' => $this->getQuantity(),
'sum' => $this->getSum(),
'vat' => $vat,
'discount' => $discount,
'control' => $this->attributes['control'],
'class' => self::class,
// calculated data
'calculated_basisPrice' => $this->basisPrice,
'calculated_price' => $this->price,
'calculated_sum' => $this->sum,
'calculated_nettoBasisPrice' => $this->nettoBasisPrice,
'calculated_nettoPrice' => $this->nettoPrice,
'calculated_nettoSubSum' => $this->nettoSubSum,
'calculated_nettoSum' => $this->nettoSum,
'calculated_isEuVat' => $this->isEuVat,
'calculated_isNetto' => $this->isNetto,
'calculated_vatArray' => $this->vatArray
'title' => $this->getTitle(),
'articleNo' => $this->getArticleNo(),
'description' => $this->getDescription(),
'unitPrice' => $this->getUnitPrice(),
'quantity' => $this->getQuantity(),
'sum' => $this->getSum(),
'vat' => $vat,
'discount' => $discount,
'control' => $this->attributes['control'],
'class' => self::class,
// calculated data (old api)
// 'calculated_basisPrice' => $this->basisPrice,
// 'calculated_price' => $this->price,
// 'calculated_sum' => $this->sum,
// 'calculated_nettoBasisPrice' => $this->nettoBasisPrice,
// 'calculated_nettoPrice' => $this->nettoPrice,
// 'calculated_nettoSubSum' => $this->nettoSubSum,
// 'calculated_nettoSum' => $this->nettoSum,
// 'calculated_isEuVat' => $this->isEuVat,
// 'calculated_isNetto' => $this->isNetto,
// 'calculated_vatArray' => $this->vatArray,
// calculated data (new api)
'calculated' => array(
'price' => $this->price,
'basisPrice' => $this->basisPrice,
'sum' => $this->sum,
'nettoPrice' => $this->nettoPrice,
'nettoBasisPrice' => $this->nettoBasisPrice,
'nettoSubSum' => $this->nettoSubSum,
'nettoSum' => $this->nettoSum,
'vatArray' => $this->vatArray,
'isEuVat' => $this->isEuVat,
'isNetto' => $this->isNetto
)
);
}
}
......@@ -106,7 +106,15 @@ public function __construct(array $attributes = array())
*/
public function setUser(QUI\Interfaces\Users\User $User)
{
$this->User = $User;
$this->calculated = false;
$this->User = $User;
foreach ($this->articles as $Article) {
/* @var $Article Article */
$Article->setUser($User);
}
$this->calc();
}
/**
......@@ -137,6 +145,10 @@ public function toUniqueList()
*/
public function calc($Calc = null)
{
if ($this->calculated) {
return $this;
}
$self = $this;
if (!$Calc) {
......
......@@ -79,7 +79,9 @@ public function toHTML()
{
$Engine = QUI::getTemplateManager()->getEngine();
$Currency = $this->getCurrency();
$article = $this->Article->toArray();
$article = $this->Article->toArray();
$calc = $article['calculated'];
$this->setAttributes($article);
......@@ -88,10 +90,10 @@ public function toHTML()
'position' => $this->position,
'unitPrice' => $Currency->format($article['unitPrice']),
'sum' => $Currency->format($article['sum']),
'calculated_basisPrice' => $Currency->format($article['calculated_basisPrice']),
'calculated_price' => $Currency->format($article['calculated_price']),
'calculated_sum' => $Currency->format($article['calculated_sum']),
'calculated_nettoSum' => $Currency->format($article['calculated_nettoSum'])
'calculated_basisPrice' => $Currency->format($calc['basisPrice']),
'calculated_price' => $Currency->format($calc['price']),
'calculated_sum' => $Currency->format($calc['sum']),
'calculated_nettoSum' => $Currency->format($calc['nettoSum'])
));
return $Engine->fetch(dirname(__FILE__) . '/ArticleView.html');
......
......@@ -171,11 +171,12 @@ public function calcArticleList(ArticleList $List, $callback = false)
$this->calcArticlePrice($Article);
$articleAttributes = $Article->toArray();
$calculated = $articleAttributes['calculated'];
$subSum = $subSum + $articleAttributes['calculated_sum'];
$nettoSum = $nettoSum + $articleAttributes['calculated_nettoSum'];
$subSum = $subSum + $calculated['sum'];
$nettoSum = $nettoSum + $calculated['nettoSum'];
$articleVatArray = $articleAttributes['calculated_vatArray'];
$articleVatArray = $calculated['vatArray'];
$vat = $articleAttributes['vat'];
if (!isset($vatArray[$vat])) {
......@@ -521,7 +522,31 @@ public static function calculateInvoicePayments(Invoice $Invoice)
public static function calculateTotal(array $invoiceList)
{
if (!count($invoiceList)) {
return array();
$Currency = QUI\ERP\Defaults::getCurrency();
$display = $Currency->format(0);
return array(
'netto_toPay' => 0,
'netto_paid' => 0,
'netto_total' => 0,
'display_netto_toPay' => $display,
'display_netto_paid' => $display,
'display_netto_total' => $display,
'vat_toPay' => 0,
'vat_paid' => 0,
'vat_total' => 0,
'display_vat_toPay' => $display,
'display_vat_paid' => $display,
'display_vat_total' => $display,
'brutto_toPay' => 0,
'brutto_paid' => 0,
'brutto_total' => 0,
'display_brutto_toPay' => $display,
'display_brutto_paid' => $display,
'display_brutto_total' => $display
);
}
try {
......@@ -547,15 +572,16 @@ public static function calculateTotal(array $invoiceList)
$bruttoToPay = $bruttoToPay + $invoice['calculated_toPay'];
}
// vat calculation
$vatPercent = QUI\Utils\Math::percent($vatTotal, $bruttoTotal);
$vatToPay = $bruttoToPay * $vatPercent / 100;
$vatPaid = $bruttoPaid * $vatPercent / 100;
$openPercent = QUI\Utils\Math::percent($bruttoToPay, $bruttoTotal);
$paidPercent = QUI\Utils\Math::percent($bruttoPaid, $bruttoTotal);
// netto calculation
$nettoPercent = QUI\Utils\Math::percent($nettoTotal, $bruttoTotal);
$nettoToPay = $bruttoToPay * $nettoPercent / 100;
$nettoPaid = $bruttoPaid * $nettoPercent / 100;
$nettoToPay = $nettoTotal * $openPercent / 100;
$nettoPaid = $nettoTotal * $paidPercent / 100;
// vat calculation
$vatToPay = $bruttoToPay - $nettoToPay;
$vatPaid = $bruttoPaid - $nettoPaid;
return array(
'netto_toPay' => $nettoToPay,
......
<?php
/**
* This file contains QUI\ERP\Address
*/
namespace QUI\ERP;
use QUI;
/**
* Class Address
*
* @package QUI\ERP
*/
class Address extends QUI\Users\Address
{
/**
* Address constructor.
*
* @param array $data
*/
public function __construct($data = array(), User $User)
{
$this->User = $User;
$this->setAttributes($data);
}
}
......@@ -213,6 +213,41 @@ public function getLocale()
return $Locale;
}
/**
* @return array
*/
public function getAttributes()
{
$attributes = parent::getAttributes();
$attributes['country'] = $this->getCountry();
$attributes['lang'] = $this->getLang();
$attributes['isCompany'] = $this->isCompany();
return $attributes;
}
/**
* @param string $attribute
* @return string
*/
public function getAttribute($attribute)
{
switch ($attribute) {
case 'firstname':
return $this->firstName;
case 'lastname':
return $this->lastName;
case 'country':
return $this->getCountry();
}
return parent::getAttribute($attribute);
}
/**
* @return mixed
*/
......@@ -233,11 +268,11 @@ public function getStatus()
* Return the current address data
*
* @param int $id - only for the interface, has no effect
* @return array
* @return Address
*/
public function getAddress($id = 0)
{
return $this->address;
return new Address($this->address, $this);
}
/**
......@@ -352,7 +387,7 @@ public function getPermission($right, $ruleset = false)
}
/**
* @return array
* @return Address
*/
public function getStandardAddress()
{
......
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren