public static function Factory(SInvoice $header, $line_data, &$errors) { if (empty($line_data['invoice_id'])) { $line_data['invoice_id'] = $header->id; } if (empty($line_data['line_number'])) { $line_data['line_number'] = $header->getNextLineNumber(); } if ($line_data['sales_qty'] > 0 && $line_data['sales_price'] > 0) { // do nothing } else { $errors[] = 'Zero quantity or net value'; return false; } $line_data['invoice_id'] = $header->id; if (!isset($line_data['move_stock'])) { $line_data['move_stock'] = 'f'; } if ($line_data['productline_id'] == -1) { $line_data['productline_id'] = ''; $line_data['stitem_id'] = ''; } elseif ($line_data['productline_id'] > 0) { $productline = DataObjectFactory::Factory('SOProductline'); $productline->load($line_data['productline_id']); if ($productline && $productline->isLoaded()) { $productlineheader = $productline->product_detail; $line_data['stitem_id'] = $productlineheader->stitem_id; $line_data['item_description'] = $productlineheader->stitem; } else { $line_data['stitem_id'] = ''; } if (!empty($line_data['stitem_id'])) { $stitem = DataObjectFactory::Factory('STitem'); $stitem->load($line_data['stitem_id']); if ($stitem) { $line_data['item_description'] = $stitem->getIdentifierValue(); $line_data['stuom_id'] = $stitem->uom_id; } } } if (empty($line_data['description'])) { $line_data['description'] = $line_data['item_description']; } $line_data['tax_status_id'] = $header->tax_status_id; $line_data['currency_id'] = $header->currency_id; $line_data['rate'] = $header->rate; $line_data['twin_currency_id'] = $header->twin_currency_id; $line_data['twin_rate'] = $header->twin_rate; $line_data['settlement_discount'] = $header->payment_term->calcSettlementDiscount($line_data['net_value']); $line_data['glaccount_centre_id'] = GLAccountCentre::getAccountCentreId($line_data['glaccount_id'], $line_data['glcentre_id'], $errors); return parent::makeLine($line_data, 'SInvoiceLine', $errors); }