Skip to content

Commit

Permalink
Merge branch '2024.11'
Browse files Browse the repository at this point in the history
  • Loading branch information
gitlabci committed Jan 28, 2025
2 parents c192a78 + 44ef01e commit dd325ba
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
17 changes: 14 additions & 3 deletions tine20/Sales/Controller/Invoice.php
Original file line number Diff line number Diff line change
Expand Up @@ -1526,6 +1526,8 @@ public function createXRechnungsAttachment(Sales_Model_Invoice $invoice): void
$debitor = $customer->{Sales_Model_Customer::FLD_DEBITORS}->getFirstRecord();
}

$preceedingInvoice = $invoice->relations->find('type', 'REVERSAL')?->related_record;

// type (invoice_type) => REVERSAL => storno gibt verknüpfung

$ublInvoice = new Sales_Model_Document_Invoice([
Expand All @@ -1552,13 +1554,22 @@ public function createXRechnungsAttachment(Sales_Model_Invoice $invoice): void
new Sales_Model_DocumentPosition_Invoice([
Sales_Model_DocumentPosition_Invoice::FLD_TITLE => 'Gesamtbetrag gem. Anlage',
Sales_Model_DocumentPosition_Invoice::FLD_TYPE => Sales_Model_DocumentPosition_Invoice::POS_TYPE_PRODUCT,
Sales_Model_DocumentPosition_Invoice::FLD_QUANTITY => 1,
Sales_Model_DocumentPosition_Invoice::FLD_UNIT_PRICE => $invoice->price_gross,
Sales_Model_DocumentPosition_Invoice::FLD_QUANTITY => $invoice->type === 'REVERSAL' ? -1 : 1,
Sales_Model_DocumentPosition_Invoice::FLD_UNIT_PRICE => abs($invoice->price_gross),
Sales_Model_DocumentPosition_Invoice::FLD_UNIT_PRICE_TYPE => Sales_Config::PRICE_TYPE_GROSS,
Sales_Model_DocumentPosition_Invoice::FLD_SALES_TAX_RATE => $invoice->sales_tax,

Sales_Model_DocumentPosition_Invoice::FLD_REVERSAL => $invoice->type === 'REVERSAL',
], true),
],
Sales_Model_Document_Invoice::FLD_PRECURSOR_DOCUMENTS => $preceedingInvoice ? new Tinebase_Record_RecordSet(Tinebase_Model_DynamicRecordWrapper::class, [
new Tinebase_Model_DynamicRecordWrapper([
Tinebase_Model_DynamicRecordWrapper::FLD_RECORD => new Sales_Model_Document_Invoice([
Sales_Model_Document_Invoice::FLD_DOCUMENT_NUMBER => $preceedingInvoice->number,
Sales_Model_Document_Invoice::FLD_DOCUMENT_DATE => $preceedingInvoice->date,
], true),
Tinebase_Model_DynamicRecordWrapper::FLD_MODEL_NAME => Sales_Model_Document_Invoice::class,
])
]) : null,
]);

if (empty($invoice->{Sales_Model_Invoice::FLD_PAYMENT_MEANS}) || 0 === $invoice->{Sales_Model_Invoice::FLD_PAYMENT_MEANS}->count()) {
Expand Down
8 changes: 4 additions & 4 deletions tine20/Sales/Model/Document/Invoice.php
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,8 @@ public function toUbl(): string
}

$precursorOrder = null;
if ($this->{self::FLD_PRECURSOR_DOCUMENTS} instanceof Tinebase_Record_RecordSet && $this->{self::FLD_PRECURSOR_DOCUMENTS}->getRecordClassName() === Sales_Model_Document_Order::class) {
$precursorOrder = $this->{self::FLD_PRECURSOR_DOCUMENTS}->getFirstRecord();
if ($this->{self::FLD_PRECURSOR_DOCUMENTS} instanceof Tinebase_Record_RecordSet && $this->{self::FLD_PRECURSOR_DOCUMENTS}->getFirstRecord()?->{Tinebase_Model_DynamicRecordWrapper::FLD_MODEL_NAME} === Sales_Model_Document_Order::class) {
$precursorOrder = $this->{self::FLD_PRECURSOR_DOCUMENTS}->getFirstRecord()->{Tinebase_Model_DynamicRecordWrapper::FLD_RECORD};
}

$ublInvoice = (new UBL21\Invoice\Invoice())
Expand Down Expand Up @@ -520,10 +520,10 @@ public function toUbl(): string
)
)
->setPrice((new \UBL21\Common\CommonAggregateComponents\Price)
->setPriceAmount((new \UBL21\Common\CommonBasicComponents\PriceAmount(round($position->{Sales_Model_DocumentPosition_Invoice::FLD_QUANTITY} *
->setPriceAmount((new \UBL21\Common\CommonBasicComponents\PriceAmount(abs(round($position->{Sales_Model_DocumentPosition_Invoice::FLD_QUANTITY} *
(Sales_Config::PRICE_TYPE_NET === $position->{Sales_Model_DocumentPosition_Invoice::FLD_UNIT_PRICE_TYPE} ?
$position->{Sales_Model_DocumentPosition_Invoice::FLD_UNIT_PRICE}
: $position->{Sales_Model_DocumentPosition_Invoice::FLD_UNIT_PRICE} * 100 / (100 + $position->{Sales_Model_DocumentPosition_Invoice::FLD_SALES_TAX_RATE})), 2)))
: $position->{Sales_Model_DocumentPosition_Invoice::FLD_UNIT_PRICE} * 100 / (100 + $position->{Sales_Model_DocumentPosition_Invoice::FLD_SALES_TAX_RATE})), 2))))
->setCurrencyID('EUR')
)
)
Expand Down

0 comments on commit dd325ba

Please sign in to comment.