get('decimalnumbers'), $this->get('decimalseparator'), $this->get('thousendsseparator')); } /** * @param \Workflow\VTInventoryEntity $context * @return string */ public function handleTask(&$context) { /* Insert here source code to execute the task */ $content = $this->get('content', $context); $content = preg_replace('/(\$[A-Za-z0-9]+)\$/', '$1', $content); $firstPos = strpos($content, '#PRODUCTBLOC_START#'); $trStartPos = strrpos(substr($content, 0, $firstPos), ''); $firstPos = strpos($content, '#PRODUCTBLOC_END#'); $trLastpos = strpos($content, '', $firstPos) + 5; $ReplaceThis = trim(substr($content, $trStartPos, $trLastpos - $trStartPos)); $trStartNextPos = strpos($ReplaceThis, ''); $trLaststartPos = strrpos($ReplaceThis, ''); $WITHINTEXT = substr($ReplaceThis, $trStartNextPos + 5, $trLaststartPos - $trStartNextPos - 5); $items = $context->exportInventory(); $ProductVars = array(); $RecordVars = array( 'DISCOUNTTOTAL' => 0, 'TAXTOTAL' => 0, 'NETTOTAL' => 0, 'TOTALWITHOUTVAT' => 0, 'FINALDISCOUNT' => 0, 'FINALDISCOUNTPERCENT' => 0 ); $taxes = getAllTaxes('all'); foreach($items['listitems'] as $POSITION => $item) { $productContext = \Workflow\VTEntity::getForId($item['productid']); $PRODUCTTOTAL = floatval($item['unitprice']) * floatval($item['quantity']); $PRODUCTSUBTOTAL = $PRODUCTTOTAL; $PRODUCTDISCOUNT = $item['discount_amount']; if(!empty($item['discount_percent'])) { $PRODUCTDISCOUNT += $PRODUCTTOTAL * ($item['discount_percent'] / 100); } $PRODUCTSTOTALAFTERDISCOUNTSUM = $PRODUCTTOTAL - $PRODUCTDISCOUNT; $PRODUCTVATPERCENT = 0; if($context->get('hdnTaxType') == 'individual') { foreach($taxes as $tax) { if(!empty($item[$tax['taxname']])) { $PRODUCTVATPERCENT += floatval($item[$tax['taxname']]); } } } $PRODUCTVATSUM = $PRODUCTSTOTALAFTERDISCOUNTSUM * ($PRODUCTVATPERCENT / 100); $PRODUCTTOTALSUM = $PRODUCTTOTAL + $PRODUCTVATSUM; $ProductVars[$POSITION] = array( 'PRODUCTNAME' => $productContext->get('productname'), 'PRODUCTTITLE' => $productContext->get('productname'), 'PRODUCTDESCRIPTION' => $productContext->get('description'), 'PRODUCTEDITDESCRIPTION' => $productContext->get('description'), 'PRODUCTLISTPRICE' => $this->formatNumber($item['unitprice']), 'PRODUCTTOTAL' => $this->formatNumber($PRODUCTTOTAL), 'PRODUCTQUANTITY' => $this->formatNumber($item['quantity']), 'PRODUCTQINSTOCK' => $this->formatNumber($productContext->get('qtyinstock')), 'PRODUCTPRICE' => $this->formatNumber($productContext->get('unit_price')), 'PRODUCTPOSITION' => $POSITION + 1, 'PRODUCTQTYPERUNIT' => $this->formatNumber($productContext->get('qty_per_unit')), 'PRODUCTUSAGEUNIT' => $productContext->get('usageunit'), 'PRODUCTDISCOUNT' => $this->formatNumber($PRODUCTDISCOUNT), "PRODUCTDISCOUNTPERCENT" => $this->formatNumber($item['discount_percent']), 'PRODUCTSTOTALAFTERDISCOUNTSUM' => $PRODUCTSTOTALAFTERDISCOUNTSUM, 'PRODUCTSTOTALAFTERDISCOUNT' => $this->formatNumber($PRODUCTSTOTALAFTERDISCOUNTSUM), 'PRODUCTTOTALSUM' => $this->formatNumber($PRODUCTTOTALSUM), 'PRODUCTVATSUM' => $this->formatNumber($PRODUCTVATSUM), 'PRODUCTVATPERCENT' => $PRODUCTVATPERCENT ); $RecordVars['NETTOTAL'] += $PRODUCTSUBTOTAL; $RecordVars['TOTALWITHOUTVAT'] += $PRODUCTSTOTALAFTERDISCOUNTSUM; $RecordVars['FINALDISCOUNT'] += $PRODUCTDISCOUNT; } $discountPercent = $context->get('hdnDiscountPercent'); $discountAmount = $context->get('hdnDiscountAmount'); if(!empty($discountPercent)) { $discountAmount = $RecordVars['TOTALWITHOUTVAT'] * ($discountPercent / 100); } if(empty($discountAmount)) $discountAmount = 0; if($context->get('hdnTaxType') == 'group') { $GROUPTAXPERCENT = 0; foreach($items['groupTax'] as $groupTax) { $GROUPTAXPERCENT += floatval($groupTax); } $RecordVars['TAXTOTALPERCENT'] = $RecordVars['VATPERCENT'] = $this->formatNumber($GROUPTAXPERCENT); foreach($ProductVars as $POSITION => $PRODUCTDATA) { $ProductVars[$POSITION]['PRODUCTVATPERCENT'] = $this->formatNumber($GROUPTAXPERCENT); $ProductVars[$POSITION]['PRODUCTVAT'] = $this->formatNumber($PRODUCTDATA["PRODUCTSTOTALAFTERDISCOUNTSUM"] * ($GROUPTAXPERCENT / 100)); $ProductVars[$POSITION]['PRODUCTVATSUM'] = $this->formatNumber($PRODUCTDATA["PRODUCTSTOTALAFTERDISCOUNTSUM"] * ($GROUPTAXPERCENT / 100)); $ProductVars[$POSITION]['PRODUCTTOTALSUM'] = $this->formatNumber($PRODUCTDATA["PRODUCTSTOTALAFTERDISCOUNTSUM"] + $PRODUCTDATA['PRODUCTVAT']); } } $RecordVars['FINALDISCOUNTSUM'] = $discountAmount; $RecordVars['FINALDISCOUNT'] = $RecordVars['TOTALDISCOUNT'] = $this->formatNumber($discountAmount); $RecordVars['TAXTOTAL'] = ($RecordVars['TOTALWITHOUTVAT'] - $RecordVars['FINALDISCOUNTSUM']) * ($GROUPTAXPERCENT / 100); $RecordVars['TAXTOTALSUM'] = $RecordVars['TAXTOTAL']; $RecordVars['TAXTOTAL'] = $RecordVars['VAT'] = $this->formatNumber($RecordVars['TAXTOTAL']); $RecordVars['FINALDISCOUNTPERCENT'] = $RecordVars['TOTALDISCOUNTPERCENT'] = $this->formatNumber($discountPercent); $RecordVars['TOTALAFTERDISCOUNT'] = $this->formatNumber($RecordVars['TOTALWITHOUTVAT'] - $discountAmount); $RecordVars['TOTALWITHOUTVATSUM'] = $RecordVars['TOTALWITHOUTVAT'] ; $RecordVars['TOTALWITHOUTVAT'] = $this->formatNumber( $RecordVars['TOTALWITHOUTVAT'] ); $RecordVars['NETTOTAL'] = $this->formatNumber( $RecordVars['NETTOTAL'] ); $RecordVars['TOTALWITHVAT'] = $this->formatNumber( ($RecordVars['TOTALWITHOUTVATSUM'] - $RecordVars['FINALDISCOUNTSUM']) + $RecordVars['TAXTOTALSUM']); $RecordVars['SHTAXAMOUNTSUM'] = $items['shippingCost']; $RecordVars['SHTAXAMOUNT'] = $this->formatNumber($items['shippingCost']); $shPercent = 0; foreach($items['shipTaxes'] as $taxId => $taxPercent) { $shPercent += floatval($taxPercent); } $RecordVars['SHTAXPERCENT'] = $this->formatNumber($shPercent); $RecordVars['SHTAXTOTAL'] = $this->formatNumber($RecordVars['SHTAXAMOUNTSUM'] * ($shPercent / 100)); $RecordVars['ADJUSTMENTSUM'] = $context->get('txtAdjustment'); $RecordVars['ADJUSTMENT'] = $this->formatNumber($RecordVars['ADJUSTMENTSUM']); $RecordVars['TOTAL'] = $this->formatNumber($context->get('hdnGrandTotal')); $RecordVars['SUBTOTAL'] = $this->formatNumber($context->get('hdnSubTotal')); $currency = getInventoryCurrencyInfo($context->getModuleName(), $context->getId()); $RecordVars['CURRENCYCODE'] = $currency['currency_code']; $RecordVars['CURRENCYSYMBOL'] = $currency['currency_symbol']; if(empty($RecordVars['CURRENCYCODE'])) $RecordVars['CURRENCYCODE'] = ''; if(empty($RecordVars['CURRENCYSYMBOL'])) $RecordVars['CURRENCYSYMBOL'] = ''; $RecordVars['CURRENCYNAME'] = getTranslatedCurrencyString($currency["currency_name"]); $finalHTML = ''; foreach($ProductVars as $POSITION => $Vars) { $dummy = \Workflow\VTEntity::getDummy(); $dummy->initData($Vars); $finalHTML .= \Workflow\VTTemplate::parse($WITHINTEXT, $dummy); } $CONTENT = str_replace($ReplaceThis, $finalHTML, $content); $dummy = \Workflow\VTEntity::getDummy(); $dummy->initData($RecordVars); $CONTENT = \Workflow\VTTemplate::parse($CONTENT, $dummy); $envid = $this->get('envid'); if(empty($envid) || $envid == -1) { return 'yes'; } $context->setEnvironment($envid, $CONTENT); return "yes"; } public function beforeGetTaskform($viewer) { if(!$this->notEmpty('decimalnumbers')) { $this->set('decimalnumbers', 2); } if(!$this->notEmpty('decimalseparator')) { $this->set('decimalseparator', ','); } if(!$this->notEmpty('thousendsseparator')) { $this->set('thousendsseparator', '.'); } if(!$this->notEmpty('content')) { $this->set('content', '
Pos %G_Qty% Text %G_LBL_LIST_PRICE% %G_Subtotal% %G_Discount% Mwst %M_Total%
#PRODUCTBLOC_START#
$PRODUCTPOSITION$ $PRODUCTQUANTITY$ $PRODUCTUSAGEUNIT$ $PRODUCTNAME$ $PRODUCTLISTPRICE$ $PRODUCTTOTAL$ $PRODUCTDISCOUNT$ $PRODUCTVATPERCENT$
$PRODUCTVATSUM$
$PRODUCTSTOTALAFTERDISCOUNT$
#PRODUCTBLOC_END#
%G_LBL_NET_PRICE% without TAX   $TOTALWITHOUTVAT$ $CURRENCYSYMBOL$
%G_Discount%   $TOTALDISCOUNT$ $CURRENCYSYMBOL$
Total without TAX   $TOTALAFTERDISCOUNT$ $CURRENCYSYMBOL$
%G_Tax% $VATPERCENT$ % %G_LBL_LIST_OF% $TOTALAFTERDISCOUNT$   $VAT$ $CURRENCYSYMBOL$
Total with TAX   $TOTALWITHVAT$ $CURRENCYSYMBOL$
%G_LBL_SHIPPING_AND_HANDLING_CHARGES%   $SHTAXAMOUNT$ $CURRENCYSYMBOL$
%G_LBL_TAX_FOR_SHIPPING_AND_HANDLING%   $SHTAXTOTAL$ $CURRENCYSYMBOL$
%G_Adjustment%   $ADJUSTMENT$ $CURRENCYSYMBOL$
%G_LBL_GRAND_TOTAL% ($CURRENCYCODE$)   $TOTAL$ $CURRENCYSYMBOL$
'); } /* Insert here source code to create custom configurations pages */ } public function beforeSave(&$values) { /* Insert here source code to modify the values the user submit on configuration */ } }