1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace App\TextParser; |
4
|
|
|
|
5
|
|
|
/** |
6
|
|
|
* Table tax summary class fo correct. |
7
|
|
|
* |
8
|
|
|
* @package TextParser |
9
|
|
|
* |
10
|
|
|
* @copyright YetiForce S.A. |
11
|
|
|
* @license YetiForce Public License 6.5 (licenses/LicenseEN.txt or yetiforce.com) |
12
|
|
|
* @author Tomasz Kur <[email protected]> |
13
|
|
|
*/ |
14
|
|
|
class TableCorrectTaxSummary extends Base |
15
|
|
|
{ |
16
|
|
|
/** @var string Class name */ |
17
|
|
|
public $name = 'LBL_TABLE_TAX_SUMMARY_FOR_CORRECT'; |
18
|
|
|
|
19
|
|
|
/** @var mixed Parser type */ |
20
|
|
|
public $type = 'pdf'; |
21
|
|
|
|
22
|
|
|
/** @var array Allowed modules */ |
23
|
|
|
public $allowedModules = ['FCorectingInvoice']; |
24
|
|
|
/** @var array Related modules fields */ |
25
|
|
|
protected $relatedModulesFields = ['FCorectingInvoice' => 'finvoiceid']; |
26
|
|
|
|
27
|
|
|
/** |
28
|
|
|
* Process. |
29
|
|
|
* |
30
|
|
|
* @return string |
31
|
|
|
*/ |
32
|
|
|
public function process() |
33
|
|
|
{ |
34
|
|
|
if (!$this->textParser->recordModel || !$this->textParser->recordModel->getModule()->isInventory()) { |
35
|
|
|
return ''; |
36
|
|
|
} |
37
|
|
|
$relatedRecordModel = \Vtiger_Record_Model::getInstanceById($this->textParser->recordModel->get($this->relatedModulesFields[$this->textParser->recordModel->getModuleName()])); |
38
|
|
|
$relatedInventoryRows = $relatedRecordModel->getInventoryData(); |
39
|
|
|
$relatedInventory = \Vtiger_Inventory_Model::getInstance($relatedRecordModel->getModuleName()); |
40
|
|
|
$html = ''; |
41
|
|
|
$inventory = \Vtiger_Inventory_Model::getInstance($this->textParser->moduleName); |
42
|
|
|
$fields = $inventory->getFieldsByBlocks(); |
43
|
|
|
$baseCurrency = \Vtiger_Util_Helper::getBaseCurrency(); |
44
|
|
|
$inventoryRows = $this->textParser->recordModel->getInventoryData(); |
45
|
|
|
$firstRow = current($inventoryRows); |
46
|
|
|
if ($inventory->isField('currency')) { |
47
|
|
|
if (!empty($firstRow) && null !== $firstRow['currency']) { |
48
|
|
|
$currency = $firstRow['currency']; |
49
|
|
|
} else { |
50
|
|
|
$currency = $baseCurrency['id']; |
51
|
|
|
} |
52
|
|
|
$currencySymbol = \App\Fields\Currency::getById($currency)['currency_symbol']; |
53
|
|
|
} else { |
54
|
|
|
$currencySymbol = \App\Fields\Currency::getDefault()['currency_symbol']; |
55
|
|
|
} |
56
|
|
|
if (!empty($fields[0])) { |
57
|
|
|
$taxes = $relatedTaxes = []; |
58
|
|
|
if ($inventory->isField('tax') && $inventory->isField('net')) { |
59
|
|
|
$taxField = $inventory->getField('tax'); |
60
|
|
|
foreach ($inventoryRows as $key => $inventoryRow) { |
61
|
|
|
$taxes = $taxField->getTaxParam($inventoryRow['taxparam'], $inventoryRow['net'], $taxes); |
|
|
|
|
62
|
|
|
} |
63
|
|
|
} |
64
|
|
|
if ($relatedInventory->isField('tax') && $relatedInventory->isField('net')) { |
65
|
|
|
$taxField = $relatedInventory->getField('tax'); |
66
|
|
|
foreach ($relatedInventoryRows as $key => $inventoryRow) { |
67
|
|
|
$relatedTaxes = $taxField->getTaxParam($inventoryRow['taxparam'], $inventoryRow['net'], $relatedTaxes); |
68
|
|
|
} |
69
|
|
|
} |
70
|
|
|
if ($inventory->isField('tax') && $inventory->isField('taxmode')) { |
71
|
|
|
$taxAmount = $relatedTaxAmount = 0; |
72
|
|
|
$html .= ' |
73
|
|
|
<table class="table-correct-tax-summary" style="width:100%;vertical-align:top;border-collapse:collapse;border:1px solid #ddd;"> |
74
|
|
|
<thead> |
75
|
|
|
<tr> |
76
|
|
|
<th colspan="2" style="font-weight:bold;padding:0px 4px;">' . \App\Language::translate('LBL_TAX_CORRECT_SUMMARY', $this->textParser->moduleName) . '</th> |
77
|
|
|
</tr> |
78
|
|
|
</thead><tbody>'; |
79
|
|
|
|
80
|
|
|
foreach ($taxes as $tax) { |
81
|
|
|
$taxAmount += $tax; |
82
|
|
|
} |
83
|
|
|
foreach ($relatedTaxes as $tax) { |
84
|
|
|
$relatedTaxAmount += $tax; |
85
|
|
|
} |
86
|
|
|
$html .= '<tr> |
87
|
|
|
<td class="name" style="text-align:left;font-weight:bold;padding:0px 4px;">' . \App\Language::translate('LBL_AMOUNT', $this->textParser->moduleName) . '</td> |
88
|
|
|
<td class="value" style="text-align:right;font-weight:bold;padding:0px 4px;">' . \CurrencyField::convertToUserFormat($relatedTaxAmount - $taxAmount, null, true) . ' ' . $currencySymbol . '</td> |
|
|
|
|
89
|
|
|
</tr> |
90
|
|
|
</tbody> |
91
|
|
|
</table>'; |
92
|
|
|
} |
93
|
|
|
} |
94
|
|
|
return $html; |
95
|
|
|
} |
96
|
|
|
} |
97
|
|
|
|