From f4ddb6576eb40f8ec49866d66c3c74f222f6ccff Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 25 Feb 2016 15:00:46 +0100 Subject: [PATCH 01/28] Implement logic for creating a new incoming invoice --- .../125_imported_to_invoicein_table.sql | 3 ++ modules/invoicein/model/invoicein.class.php | 36 +++++++++++++++++++ modules/invoicein/view/edit.php | 11 +++++- modules/invoicein/view/record.inc | 3 ++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 db/changes/125_imported_to_invoicein_table.sql diff --git a/db/changes/125_imported_to_invoicein_table.sql b/db/changes/125_imported_to_invoicein_table.sql new file mode 100644 index 00000000..ddf0b7c7 --- /dev/null +++ b/db/changes/125_imported_to_invoicein_table.sql @@ -0,0 +1,3 @@ +-- Add imported to invoicein +ALTER TABLE invoicein +ADD Imported int(1) DEFAULT 1; diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index eb9f62f7..e485d830 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -312,6 +312,34 @@ function update($args) { $_lib['message']->add('Sted mangler på leverandør kontoplan'); } } + if(!$invoicein->IName) { + if($accountplan->AccountName) { + $args['invoicein_IName_' . $ID] = $accountplan->AccountName; + $_lib['message']->add('Navn kopiert fra leverandør kontoplan'); + } else { + $_lib['message']->add('Navn mangler på leverandør kontoplan'); + } + } + if(!$invoicein->IAddress) { + if($accountplan->Address) { + $args['invoicein_IAddress_' . $ID] = $accountplan->Address; + $_lib['message']->add('Adresse kopiert fra leverandør kontoplan'); + } else { + $_lib['message']->add('Addresse mangler på leverandør kontoplan'); + } + } + if(!$invoicein->DZipCode) { + $args['invoicein_DZipCode_' . $ID] = $accountplan->ZipCode; + } + if(!$invoicein->DName) { + $args['invoicein_DName_' . $ID] = $accountplan->AccountName; + } + if(!$invoicein->DCity) { + $args['invoicein_DCity_' . $ID] = $accountplan->City; + } + if(!$invoicein->DAddress) { + $args['invoicein_DAddress_' . $ID] = $accountplan->Address; + } if(!$invoicein->SupplierBankAccount) { if($accountplan->DomesticBankAccount) { $args['invoicein_SupplierBankAccount_' . $ID] = $accountplan->DomesticBankAccount; @@ -322,6 +350,10 @@ function update($args) { $_lib['message']->add('Kontonummer mangler på leverandør kontoplan'); } } + if(!$invoicein->CustomerAccountPlanID) { + $args['invoicein_CustomerAccountPlanID_' . $ID] = $_lib['sess']->get_companydef('OrgNumber'); + } + $args['invoicein_RemittanceAmount_'.$ID] = $args['invoicein_TotalCustPrice_'.$ID]; if(($args['invoicein_DepartmentID_'.$ID] === DB_NULL_PLACEHOLDER) && $accountplan->EnableDepartment == 1 && isset($accountplan->DepartmentID)) $args['invoicein_DepartmentID_'.$ID] = $accountplan->DepartmentID; @@ -420,10 +452,14 @@ function linedelete($args) { * @return Current iteration */ public function add() { + global $_lib; $dataH['CustomerBankAccount'] = $_lib['sess']->get_companydef('BankAccount'); $old_pattern = array("/[^0-9]/"); $new_pattern = array(""); $dataH['CustomerAccountPlanID'] = strtolower(preg_replace($old_pattern, $new_pattern , $_lib['sess']->get_companydef('OrgNumber'))); + $add_invoicein = "INSERT INTO invoicein(ID, VoucherType, InsertedByPersonID, InsertedDateTime, Imported) VALUES(NULL, 'U',". $_lib['sess']->get_person('PersonID') .", NOW(), 0)"; + $_lib['db']->db_insert($add_invoicein); + return $_lib['db']->db_insert_id(); } ################################################################################################ diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index 3388ee85..dbc4fd48 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -189,12 +189,21 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { +Imported) { ?> + + + + + + + + @@ -215,7 +224,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - + diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index d9dc237f..f3af7bb3 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -29,6 +29,9 @@ if($_lib['input']->getProperty('action_invoicein_journal')) { $rem = new logic_remittance_remittance($_POST); print $rem->fill(); print $rem->pay(); +} elseif($_lib['input']->getProperty('action_invoicein_add')) { + $ID = $invoicein->add(); + header("Location: " . $_lib['sess']->dispatchs . "t=invoicein.edit&ID=" . $ID . "&inline=edit"); } // Remove an allowance/charge from invoice line if($_lib['input']->getProperty('action_invoicein_line_allowance_charge_delete')) { From baf4897e9543a5d760f7646a433d47dfceb6f363 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 16 Mar 2016 13:58:46 +0100 Subject: [PATCH 02/28] Fix tabindex on invoicein edit page --- modules/invoicein/view/edit.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index dbc4fd48..c976af05 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -23,6 +23,8 @@ $accounting = new accounting(); require_once "record.inc"; +$tabindex = 1; + $get_invoice = "select I.* from $db_table as I where ID='$ID'"; #print "Get invoice " . $get_invoice . "
\n"; $invoicein = $_lib['storage']->get_row(array('query' => $get_invoice)); @@ -212,21 +214,21 @@ function updatePeriodFromInvoiceDate(invoice_date_element) {
- + - + - + - + - + @@ -282,7 +284,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - + @@ -433,6 +435,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { $aconf['width'] = '20'; $aconf['type'][] = 'result'; $aconf['type'][] = 'balance'; + $aconf['tabindex'] = $tabindex++; $accountplan = $accounting->get_accountplan_object($row2->AccountPlanID); print $_lib['form3']->accountplan_number_menu($aconf); ?> @@ -646,7 +649,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { if($_lib['sess']->get_person('AccessLevel') >= 2) { if($accounting->is_valid_accountperiod($_lib['date']->get_this_period($invoicein->Period), $_lib['sess']->get_person('AccessLevel'))) { - print $_lib['form3']->Input(array('type'=>'submit', 'name'=>'action_invoicein_update', 'value'=>'Lagre faktura (S)', 'accesskey'=>'S')); + print $_lib['form3']->Input(array('type'=>'submit', 'name'=>'action_invoicein_update', 'value'=>'Lagre faktura (S)', 'accesskey'=>'S', 'tabindex' => $tabindex++)); } else { print "Periode stengt"; } From 628e3ea57b5ebe270295f5088b85050b07579ff8 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 16 Mar 2016 15:36:22 +0100 Subject: [PATCH 03/28] Add unit price with tax to invoice lines in invoicein edit view --- modules/invoicein/model/invoicein.class.php | 15 +++++++++++++++ modules/invoicein/view/edit.php | 2 ++ 2 files changed, 17 insertions(+) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index e485d830..86f14bf9 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -354,6 +354,21 @@ function update($args) { $args['invoicein_CustomerAccountPlanID_' . $ID] = $_lib['sess']->get_companydef('OrgNumber'); } $args['invoicein_RemittanceAmount_'.$ID] = $args['invoicein_TotalCustPrice_'.$ID]; + // update UnitCustPrice(unit price without tax) from UnitCostPrice(unit price with tax) if it is set + for($i = 1; $i <= $args['field_count']; $i++) { + $line_id = $args[$i]; + if (isset($args['invoiceinline_UnitCostPrice_'.$line_id])) { + $UnitCostPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCostPrice_'.$line_id], 'return' => 'value')); + $UnitCustPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCustPrice_'.$line_id], 'return' => 'value')); + $VATPercent = $_lib['convert']->Amount(array('value' => $args['invoiceinline_Vat_'.$line_id], 'return' => 'value'))/100.0; + if ($UnitCostPrice != 0) { + $args['invoiceinline_UnitCustPrice_'.$line_id] = $UnitCostPrice/($VATPercent+1); + // else update UnitCostPrice from UnitCustPrice + } elseif ($UnitCustPrice != 0) { + $args['invoiceinline_UnitCostPrice_'.$line_id] = $UnitCustPrice*($VATPercent+1); + } + } + } if(($args['invoicein_DepartmentID_'.$ID] === DB_NULL_PLACEHOLDER) && $accountplan->EnableDepartment == 1 && isset($accountplan->DepartmentID)) $args['invoicein_DepartmentID_'.$ID] = $accountplan->DepartmentID; diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index c976af05..3bdcddd8 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -384,6 +384,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { + @@ -463,6 +464,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { ?> + From 4f08acbcb38c16054400675c976d9a3c64b7ebdf Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 16 Mar 2016 15:52:41 +0100 Subject: [PATCH 04/28] Calculate total invoice amount on save for manually created invoices --- modules/invoicein/model/invoicein.class.php | 11 +++++++++++ modules/invoicein/view/edit.php | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 86f14bf9..8ed6036b 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -369,6 +369,17 @@ function update($args) { } } } + // if manually created invoice(not imported from Fakturabank) + if (!$invoicein->Imported) { + // calculate total cost for invoice + $TotalCustPrice = 0; + for($i = 1; $i <= $args['field_count']; $i++) { + $line_id = $args[$i]; + $UnitCostPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCostPrice_'.$line_id], 'return' => 'value')); + $TotalCustPrice += $UnitCostPrice; + } + $args['invoicein_TotalCustPrice_'.$ID] = $TotalCustPrice; + } if(($args['invoicein_DepartmentID_'.$ID] === DB_NULL_PLACEHOLDER) && $accountplan->EnableDepartment == 1 && isset($accountplan->DepartmentID)) $args['invoicein_DepartmentID_'.$ID] = $accountplan->DepartmentID; diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index 3bdcddd8..43a99ee6 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -226,7 +226,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - + From 2ebe98c20298ee541ae1d3698774dec6ab3d9fda Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 16 Mar 2016 16:00:55 +0100 Subject: [PATCH 05/28] Rename migration to next available number --- ...to_invoicein_table.sql => 127_imported_to_invoicein_table.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename db/changes/{125_imported_to_invoicein_table.sql => 127_imported_to_invoicein_table.sql} (100%) diff --git a/db/changes/125_imported_to_invoicein_table.sql b/db/changes/127_imported_to_invoicein_table.sql similarity index 100% rename from db/changes/125_imported_to_invoicein_table.sql rename to db/changes/127_imported_to_invoicein_table.sql From 42ce21e106dfa18a6d525450afa12007c3640d54 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 17 Mar 2016 11:25:32 +0100 Subject: [PATCH 06/28] Add migration for clearing unit price with tax to 0 --- db/changes/127_imported_to_invoicein_table.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/db/changes/127_imported_to_invoicein_table.sql b/db/changes/127_imported_to_invoicein_table.sql index ddf0b7c7..3ba90d93 100644 --- a/db/changes/127_imported_to_invoicein_table.sql +++ b/db/changes/127_imported_to_invoicein_table.sql @@ -1,3 +1,5 @@ -- Add imported to invoicein ALTER TABLE invoicein ADD Imported int(1) DEFAULT 1; + +UPDATE invoiceinline SET UnitCostPrice = 0 WHERE Active = 1; From af7fd7e6804e4b87c044c51968f19d17fec6908b Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 17 Mar 2016 11:28:13 +0100 Subject: [PATCH 07/28] Fix invoicein import from fakturabank Now we correctly fetch the unit cost with tax and display the tax amount that we got when importing if any --- modules/fakturabank/model/fakturabank.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/fakturabank/model/fakturabank.class.php b/modules/fakturabank/model/fakturabank.class.php index 963620f8..e647286f 100644 --- a/modules/fakturabank/model/fakturabank.class.php +++ b/modules/fakturabank/model/fakturabank.class.php @@ -1643,7 +1643,7 @@ public function registerincoming() { #Foreign currency if ($is_foreign) { - $datalineH['UnitCostPrice'] = exchange::convertToLocal($InvoiceO->DocumentCurrencyCode, $CustPrice); + $datalineH['UnitCustPrice'] = exchange::convertToLocal($InvoiceO->DocumentCurrencyCode, $CustPrice); $datalineH['ForeignCurrencyID'] = $InvoiceO->DocumentCurrencyCode; $datalineH['ForeignAmount'] = (float)$line->LineExtensionAmount + $line->TaxTotal->TaxAmount; $datalineH['ForeignConvRate'] = $conversion_rate; @@ -1655,8 +1655,6 @@ public function registerincoming() { $datalineH['TaxAmount'] = (float)$line->TaxTotal->TaxAmount; } - $datalineH['UnitCustPrice'] = $datalineH['UnitCostPrice']; - $datalineH['UnitCostPriceCurrencyID'] = exchange::getLocalCurrency(); $datalineH['UnitCustPriceCurrencyID'] = exchange::getLocalCurrency(); @@ -1665,6 +1663,8 @@ public function registerincoming() { $datalineH['TotalWithTax'] = $datalineH['TotalWithoutTax'] + $datalineH['TaxAmount']; + $datalineH['UnitCostPrice'] = $datalineH['UnitCustPrice'] + $datalineH['TaxAmount']/$Quantity; + $datalineH['InsertedByPersonID']= $_lib['sess']->get_person('PersonID'); $datalineH['InsertedDateTime'] = $_lib['sess']->get_session('Datetime'); $datalineH['UpdatedByPersonID'] = $_lib['sess']->get_person('PersonID'); From 2386e6202fdbbe626287d75afa392728607a3a13 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 17 Mar 2016 12:53:45 +0100 Subject: [PATCH 08/28] Fix calculating invoice total amount --- modules/invoicein/model/invoicein.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 8ed6036b..70149638 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -376,7 +376,8 @@ function update($args) { for($i = 1; $i <= $args['field_count']; $i++) { $line_id = $args[$i]; $UnitCostPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCostPrice_'.$line_id], 'return' => 'value')); - $TotalCustPrice += $UnitCostPrice; + $QuantityDelivered = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_QuantityDelivered_'.$line_id], 'return' => 'value')); + $TotalCustPrice += $UnitCostPrice * $QuantityDelivered; } $args['invoicein_TotalCustPrice_'.$ID] = $TotalCustPrice; } From e00d8541fa90ec98847d9d82c75d16b98c937f8a Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 17 Mar 2016 15:57:54 +0100 Subject: [PATCH 09/28] Do not show the JournalID for the invoices that cannot be bookkept --- modules/invoicein/view/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/invoicein/view/list.php b/modules/invoicein/view/list.php index aa5668ba..8ff8e6ae 100755 --- a/modules/invoicein/view/list.php +++ b/modules/invoicein/view/list.php @@ -158,7 +158,7 @@ ?> TotalCustPrice != 0) {?> - + From e293baa82fc5158f1c05d808ff7dce8de52765ec Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 17 Mar 2016 15:58:36 +0100 Subject: [PATCH 10/28] Show project and department names as well on invoicein list page --- modules/invoicein/view/list.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/invoicein/view/list.php b/modules/invoicein/view/list.php index 8ff8e6ae..5145f73c 100755 --- a/modules/invoicein/view/list.php +++ b/modules/invoicein/view/list.php @@ -180,8 +180,17 @@ print $_lib['format']->Amount($InvoiceO->TotalCustPrice); ?> - - + Department); + $department_row = $_lib['storage']->get_row(array('query' => $query_department, 'debug' => true)); + $department = $department_row->DepartmentID . " - " . $department_row->DepartmentName; + + $query_project = sprintf("SELECT * FROM project WHERE ProjectID = %d", $InvoiceO->Project); + $project_row = $_lib['storage']->get_row(array('query' => $query_project, 'debug' => true)); + $project = $project_row->ProjectID . " - " . $project_row->Heading; + ?> + + +Imported) { ?> + + + + + + + +
Bilagsnummer VoucherType&voucher_JournalID=$invoicein->JournalID"; ?>&action_journalid_search=1" target="_new">VoucherType ?>JournalID ?> Bilagsnummer text(array('table'=>$db_table, 'field'=>'JournalID', 'pk' => $ID, 'value'=>$invoicein->JournalID, 'width'=>'30', 'tabindex' => $tabindex++)) ?>
BilagsnummerJournalID ?>
Fakturanummer text(array('table'=>$db_table, 'field'=>'InvoiceNumber', 'pk' => $ID, 'value'=>$invoicein->InvoiceNumber, 'width'=>'30', 'tabindex' => $tabindex++)) ?>
Betal (beløp)text(array('table'=>$db_table, 'field'=>'RemittanceAmount', 'pk'=>$ID, 'value' => $invoicein->RemittanceAmount)) ?>text(array('table'=>$db_table, 'field'=>'TotalCustPrice', 'pk'=>$ID, 'value' => $invoicein->TotalCustPrice)) ?> Betalingsmåte select(array('table'=>$db_table, 'field'=>'PaymentMeans', 'pk' => $ID, 'value' => $invoicein->PaymentMeans, 'query' => 'form.PaymentMeans', 'width' => 30)) ?>
Leverandøraccountplan_number_menu(array('table'=>$db_table, 'field'=>'SupplierAccountPlanID', 'pk'=>$ID, 'value'=>$invoicein->SupplierAccountPlanID, 'type' => array(0 => supplier))) ?>accountplan_number_menu(array('table'=>$db_table, 'field'=>'SupplierAccountPlanID', 'pk'=>$ID, 'value'=>$invoicein->SupplierAccountPlanID, 'tabindex' => $tabindex++, 'type' => array(0 => supplier))) ?> Mottaker to->CompanyName ?>
Betal til kontotext(array('table'=>$db_table, 'field'=>'SupplierBankAccount', 'pk' => $ID, 'value' => $invoicein->SupplierBankAccount)) ?>text(array('table'=>$db_table, 'field'=>'SupplierBankAccount', 'pk' => $ID, 'value' => $invoicein->SupplierBankAccount, 'tabindex' => $tabindex++)) ?> Betal fra kontoselect(array('table'=>$db_table, 'field'=>'CustomerBankAccount', 'pk' => $ID, 'value' => $invoicein->CustomerBankAccount, 'query' => 'form.BankAccount', 'width' => 30)) ?>select(array('table'=>$db_table, 'field'=>'CustomerBankAccount', 'pk' => $ID, 'value' => $invoicein->CustomerBankAccount, 'query' => 'form.BankAccount', 'width' => 30, 'tabindex' => $tabindex++)) ?>
Betal (beløp)text(array('table'=>$db_table, 'field'=>'TotalCustPrice', 'pk'=>$ID, 'value' => $invoicein->TotalCustPrice)) ?>text(array('table'=>$db_table, 'field'=>'TotalCustPrice', 'pk'=>$ID, 'value' => $invoicein->TotalCustPrice, 'tabindex' => $tabindex++)) ?> Betalingsmåteselect(array('table'=>$db_table, 'field'=>'PaymentMeans', 'pk' => $ID, 'value' => $invoicein->PaymentMeans, 'query' => 'form.PaymentMeans', 'width' => 30)) ?>select(array('table'=>$db_table, 'field'=>'PaymentMeans', 'pk' => $ID, 'value' => $invoicein->PaymentMeans, 'query' => 'form.PaymentMeans', 'width' => 30, 'tabindex' => $tabindex++)) ?>
Org nrForfalls dato text(array('table'=>$db_table, 'field'=>'DueDate', 'pk'=>$ID, 'value'=>substr($invoicein->DueDate,0,10), 'width'=>'30', 'tabindex'=> $tabindex++)) ?> Er med i reisegarantifondetCheckbox(array('table'=>$db_table, 'field'=>'isReisegarantifond', 'pk'=>$ID, 'value'=>$invoicein->isReisegarantifond)) ?>Checkbox(array('table'=>$db_table, 'field'=>'isReisegarantifond', 'pk'=>$ID, 'value'=>$invoicein->isReisegarantifond, 'tabindex' => $tabindex++)) ?>
Vår ref.Bil Antall EnhetsprisEnhetspris inklusiv MVA MVA MVA beløp Beløp U/MVA Input(array('type'=>'text', 'table'=>$db_table2, 'field'=>'QuantityDelivered', 'pk'=>$LineID, 'value'=>$row2->QuantityDelivered, 'width'=>'8', 'tabindex'=>$tabindex++, 'class'=>'number')) ?> Input(array('type'=>'text', 'table'=>$db_table2, 'field'=>'UnitCustPrice', 'pk'=>$LineID, 'value'=>$_lib['format']->Amount(array('value'=>$row2->UnitCustPrice, 'return'=>'value')), 'width'=>'15', 'tabindex'=>$tabindex++, 'class'=>'number')) ?>Input(array('type'=>'text', 'table'=>$db_table2, 'field'=>'UnitCostPrice', 'pk'=>$LineID, 'value'=>$_lib['format']->Amount(array('value'=>$row2->UnitCostPrice, 'return'=>'value')), 'width'=>'15', 'tabindex'=>$tabindex++, 'class'=>'number')) ?> text(array('table'=>$db_table2, 'field'=>'Vat', 'pk'=>$LineID, 'value'=>$row2->Vat, 'width' => 5, 'maxlength' => 5, 'tabindex'=>$tabindex++)) ?> Amount($row2->TaxAmount) ?> Input(array('type'=>'text', 'table'=>$db_table2, 'field'=>'TotalWithoutTax', 'pk'=>$LineID, 'value'=>$_lib['format']->Amount(array('value'=>$row2->TotalWithoutTax, 'return'=>'value')), 'width'=>'15', 'tabindex'=>$tabindex++, 'class'=>'number')) ?>
Betal (beløp)text(array('table'=>$db_table, 'field'=>'TotalCustPrice', 'pk'=>$ID, 'value' => $invoicein->TotalCustPrice, 'tabindex' => $tabindex++)) ?>text(array('table'=>$db_table, 'field'=>'TotalCustPrice', 'pk'=>$ID, 'value' => $_lib['format']->Amount($invoicein->TotalCustPrice), 'tabindex' => $tabindex++)) ?> Betalingsmåte select(array('table'=>$db_table, 'field'=>'PaymentMeans', 'pk' => $ID, 'value' => $invoicein->PaymentMeans, 'query' => 'form.PaymentMeans', 'width' => 30, 'tabindex' => $tabindex++)) ?>
Journaled) { ?>VoucherType&voucher_JournalID=$InvoiceO->JournalID"; ?>&action_journalid_search=1" target="_new">VoucherType ?>JournalID ?>VoucherType . $InvoiceO->JournalID; } ?>Journaled) { ?>VoucherType&voucher_JournalID=$InvoiceO->JournalID"; ?>&action_journalid_search=1" target="_new">VoucherType ?>JournalID ?>Journal) { print $InvoiceO->VoucherType . $InvoiceO->JournalID; } ?> ProjectID ?>DepartmentID ?>Project != '') print $project ?>Department != '') print $department ?> 40){ print substr($ReasonsInfo, 0, 37) . '...'; From 7d5d7d55afb655329d186e3f03d4ad457a931dc7 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 17 Mar 2016 16:02:38 +0100 Subject: [PATCH 11/28] Show who created the invoice and when if it was not imported --- modules/invoicein/view/edit.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index 43a99ee6..ef7aed99 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -333,12 +333,21 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { RemittanceDaySequence RemittanceDaySequence ?>
Opprettet påInsertedDateTime ?>Opprettet avPersonIDToName($invoicein->InsertedByPersonID) ?>
Hentet fra fakturabank FakturabankDateTime ?> Hentet fra fakturabank av PersonIDToName($invoicein->FakturabankPersonID) ?>
Date: Thu, 17 Mar 2016 16:13:54 +0100 Subject: [PATCH 12/28] Update invoicein fields correctly on date/supplier change --- modules/invoicein/model/invoicein.class.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 70149638..dc816cd0 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -291,6 +291,7 @@ function update($args) { self::addVATPercentToAllowanceCharge($args); self::invertAllAllowanceAmounts($args); +<<<<<<< HEAD self::calculatePriceAmountQuantity($args); if(!$invoicein->IZipCode) { if($accountplan->ZipCode) { @@ -327,6 +328,20 @@ function update($args) { } else { $_lib['message']->add('Addresse mangler på leverandør kontoplan'); } + $changed_supplier_accountplan = $invoicein->SupplierAccountPlanID != $AccountPlanID; + + // update all supplier related info on the invoice + if($changed_supplier_accountplan) { + $args['invoicein_IZipCode_' . $ID] = $accountplan->ZipCode; + if(!$accountplan->ZipCode) $_lib['message']->add('Postnummer mangler på leverandør kontoplan'); + $args['invoicein_ICity_' . $ID] = $accountplan->City; + if(!$accountplan->City) $_lib['message']->add('Sted mangler på leverandør kontoplan'); + $args['invoicein_IName_' . $ID] = $accountplan->AccountName; + if(!$accountplan->AccountName) $_lib['message']->add('Navn mangler på leverandør kontoplan'); + $args['invoicein_IAddress_' . $ID] = $accountplan->Address; + if($accountplan->Address) $_lib['message']->add('Addresse mangler på leverandør kontoplan'); + $args['invoicein_SupplierBankAccount_' . $ID] = $accountplan->DomesticBankAccount; + if(!$accountplan->DomesticBankAccount) $_lib['message']->add('Kontonummer mangler på leverandør kontoplan'); } if(!$invoicein->DZipCode) { $args['invoicein_DZipCode_' . $ID] = $accountplan->ZipCode; @@ -369,6 +384,8 @@ function update($args) { } } } + // set the period as the period the invoice date belongs to + if ($args['invoicein_InvoiceDate_'.$ID] && !empty($args['invoicein_InvoiceDate_'.$ID])) $args['invoicein_Period_'.$ID] = strftime("%Y-%m", strtotime($args['invoicein_InvoiceDate_'.$ID])); // if manually created invoice(not imported from Fakturabank) if (!$invoicein->Imported) { // calculate total cost for invoice From 33f5b87d8b499a5cf3ee4c249eb588704addf437 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Tue, 29 Mar 2016 09:56:53 +0200 Subject: [PATCH 13/28] Small fixes after codereview Move fetching id and name for department and project to their classes Add some comments where needed Prevent devision by zero Prevent code propagation after header redirect --- modules/department/model/department.class.php | 19 ++++++++++++++++++ .../fakturabank/model/fakturabank.class.php | 8 +++++++- modules/invoicein/model/invoicein.class.php | 20 +++++++++---------- modules/invoicein/view/list.php | 14 ++++++------- modules/invoicein/view/record.inc | 1 + modules/project/model/project.class.php | 19 ++++++++++++++++++ 6 files changed, 62 insertions(+), 19 deletions(-) create mode 100644 modules/department/model/department.class.php create mode 100644 modules/project/model/project.class.php diff --git a/modules/department/model/department.class.php b/modules/department/model/department.class.php new file mode 100644 index 00000000..48ec7c09 --- /dev/null +++ b/modules/department/model/department.class.php @@ -0,0 +1,19 @@ + $value) { + $this->{$key} = $value; + } + } + + public function getDepartmentIDAndName() { + global $_lib; + $query_department = sprintf("SELECT * FROM department WHERE DepartmentID = %d", $this->DepartmentID); + $department_row = $_lib['storage']->get_row(array('query' => $query_department)); + $department_id_and_name = $department_row->DepartmentID . " - " . $department_row->DepartmentName; + return $department_id_and_name; + } +} +?> diff --git a/modules/fakturabank/model/fakturabank.class.php b/modules/fakturabank/model/fakturabank.class.php index e647286f..9bf98010 100644 --- a/modules/fakturabank/model/fakturabank.class.php +++ b/modules/fakturabank/model/fakturabank.class.php @@ -1663,7 +1663,13 @@ public function registerincoming() { $datalineH['TotalWithTax'] = $datalineH['TotalWithoutTax'] + $datalineH['TaxAmount']; - $datalineH['UnitCostPrice'] = $datalineH['UnitCustPrice'] + $datalineH['TaxAmount']/$Quantity; + // If Quantity not zero, we can devide by it and get the tax amount per unit. If not then set the amount of + // one unit with tax to 100 + Vat percent of the amount of one unit without tax + if ($Quantity != 0) { + $datalineH['UnitCostPrice'] = $datalineH['UnitCustPrice'] + $datalineH['TaxAmount']/$Quantity; + } else { + $datalineH['UnitCostPrice'] = $datalineH['UnitCustPrice'] * (1 + $datalineH['Vat']/100.0); + } $datalineH['InsertedByPersonID']= $_lib['sess']->get_person('PersonID'); $datalineH['InsertedDateTime'] = $_lib['sess']->get_session('Datetime'); diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index dc816cd0..31d848a3 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -372,16 +372,15 @@ function update($args) { // update UnitCustPrice(unit price without tax) from UnitCostPrice(unit price with tax) if it is set for($i = 1; $i <= $args['field_count']; $i++) { $line_id = $args[$i]; - if (isset($args['invoiceinline_UnitCostPrice_'.$line_id])) { - $UnitCostPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCostPrice_'.$line_id], 'return' => 'value')); - $UnitCustPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCustPrice_'.$line_id], 'return' => 'value')); - $VATPercent = $_lib['convert']->Amount(array('value' => $args['invoiceinline_Vat_'.$line_id], 'return' => 'value'))/100.0; - if ($UnitCostPrice != 0) { - $args['invoiceinline_UnitCustPrice_'.$line_id] = $UnitCostPrice/($VATPercent+1); - // else update UnitCostPrice from UnitCustPrice - } elseif ($UnitCustPrice != 0) { - $args['invoiceinline_UnitCostPrice_'.$line_id] = $UnitCustPrice*($VATPercent+1); - } + if (!isset($args['invoiceinline_UnitCostPrice_'.$line_id])) continue; + $UnitCostPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCostPrice_'.$line_id], 'return' => 'value')); + $UnitCustPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCustPrice_'.$line_id], 'return' => 'value')); + $VATPercent = $_lib['convert']->Amount(array('value' => $args['invoiceinline_Vat_'.$line_id], 'return' => 'value'))/100.0; + if ($UnitCostPrice != 0) { + $args['invoiceinline_UnitCustPrice_'.$line_id] = $UnitCostPrice/($VATPercent+1); + // else update UnitCostPrice from UnitCustPrice + } elseif ($UnitCustPrice != 0) { + $args['invoiceinline_UnitCostPrice_'.$line_id] = $UnitCustPrice*($VATPercent+1); } } // set the period as the period the invoice date belongs to @@ -391,6 +390,7 @@ function update($args) { // calculate total cost for invoice $TotalCustPrice = 0; for($i = 1; $i <= $args['field_count']; $i++) { + if (!isset($args['invoiceinline_UnitCostPrice_'.$line_id])) continue; $line_id = $args[$i]; $UnitCostPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCostPrice_'.$line_id], 'return' => 'value')); $QuantityDelivered = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_QuantityDelivered_'.$line_id], 'return' => 'value')); diff --git a/modules/invoicein/view/list.php b/modules/invoicein/view/list.php index 5145f73c..850256c7 100755 --- a/modules/invoicein/view/list.php +++ b/modules/invoicein/view/list.php @@ -181,16 +181,14 @@ ?> Department); - $department_row = $_lib['storage']->get_row(array('query' => $query_department, 'debug' => true)); - $department = $department_row->DepartmentID . " - " . $department_row->DepartmentName; + includelogic('department/department'); + $department = new lodo_department(array('DepartmentID' => $InvoiceO->Department)); - $query_project = sprintf("SELECT * FROM project WHERE ProjectID = %d", $InvoiceO->Project); - $project_row = $_lib['storage']->get_row(array('query' => $query_project, 'debug' => true)); - $project = $project_row->ProjectID . " - " . $project_row->Heading; + includelogic('project/project'); + $project = new lodo_project(array('ProjectID' => $InvoiceO->Project)); ?> - Project != '') print $project ?> - Department != '') print $department ?> + Project != '') print $project->getProjectIDAndName(); ?> + Department != '') print $department->getDepartmentIDAndName(); ?> 40){ print substr($ReasonsInfo, 0, 37) . '...'; diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index f3af7bb3..5739aeea 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -32,6 +32,7 @@ if($_lib['input']->getProperty('action_invoicein_journal')) { } elseif($_lib['input']->getProperty('action_invoicein_add')) { $ID = $invoicein->add(); header("Location: " . $_lib['sess']->dispatchs . "t=invoicein.edit&ID=" . $ID . "&inline=edit"); + die(); } // Remove an allowance/charge from invoice line if($_lib['input']->getProperty('action_invoicein_line_allowance_charge_delete')) { diff --git a/modules/project/model/project.class.php b/modules/project/model/project.class.php new file mode 100644 index 00000000..26c5f5b7 --- /dev/null +++ b/modules/project/model/project.class.php @@ -0,0 +1,19 @@ + $value) { + $this->{$key} = $value; + } + } + + public function getProjectIDAndName() { + global $_lib; + $query_project = sprintf("SELECT * FROM project WHERE ProjectID = %d", $this->ProjectID); + $project_row = $_lib['storage']->get_row(array('query' => $query_project)); + $project_id_and_name = $project_row->ProjectID . " - " . $project_row->Heading; + return $project_id_and_name; + } +} +?> From 737d86b6a17eab0c8a3ce9880841ee414e334771 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Mon, 4 Apr 2016 15:49:22 +0200 Subject: [PATCH 14/28] Fix: Just print invoicein total amount, resolve missing accountplan --- modules/invoicein/view/edit.php | 2 +- modules/invoicein/view/record.inc | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index ef7aed99..705f5ccd 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -226,7 +226,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { Betal (beløp) - text(array('table'=>$db_table, 'field'=>'TotalCustPrice', 'pk'=>$ID, 'value' => $_lib['format']->Amount($invoicein->TotalCustPrice), 'tabindex' => $tabindex++)) ?> + Amount($invoicein->TotalCustPrice); ?> Betalingsmåte select(array('table'=>$db_table, 'field'=>'PaymentMeans', 'pk' => $ID, 'value' => $invoicein->PaymentMeans, 'query' => 'form.PaymentMeans', 'width' => 30, 'tabindex' => $tabindex++)) ?> diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index 5739aeea..349a4b79 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -1,4 +1,12 @@ getProperty('action_invoicein_linenew') || $_lib['input']->getProperty('action_invoicein_linedelete')) { + $ID = $_REQUEST['ID']; + $supplier_accountplan = $_lib['storage']->get_row(array('query' => "SELECT SupplierAccountPlanID FROM invoicein WHERE ID = " . $ID)); + $_REQUEST['invoicein_SupplierAccountPlanID_' . $ID] = $supplier_accountplan->SupplierAccountPlanID; +} + if($_lib['input']->getProperty('action_invoicein_journal')) { print "bilagsf¿r
"; $invoicein->journal(); @@ -22,6 +30,14 @@ if($_lib['input']->getProperty('action_invoicein_journal')) { } $invoicein->update($_POST); +} elseif($_lib['input']->getProperty('action_invoicein_linenew')) { + $invoicein->update($_REQUEST); + $invoicein->linenew($_REQUEST); + +} elseif($_lib['input']->getProperty('action_invoicein_linedelete')) { + $invoicein->update($_REQUEST); + $invoicein->linedelete($_REQUEST); + } elseif($_lib['input']->getProperty('action_invoicein_remittance')) { includelogic('remittance/remittance'); From 35b1231b24d100dbc30254700cbe2e2fefe2df1a Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 2 Jun 2016 08:06:41 +0200 Subject: [PATCH 15/28] Fix after code review and discussion --- inc/top.inc.php | 4 +++ modules/invoicein/model/invoicein.class.php | 16 +++++++++ modules/invoicein/view/edit.php | 37 +++++++++++++++------ modules/invoicein/view/list.php | 2 ++ modules/invoicein/view/record.inc | 6 ++++ 5 files changed, 54 insertions(+), 11 deletions(-) diff --git a/inc/top.inc.php b/inc/top.inc.php index 88c75791..81e3e190 100755 --- a/inc/top.inc.php +++ b/inc/top.inc.php @@ -103,7 +103,11 @@ Ut Innbetaling (OCR/KID) Bank +dispatch ?>t=remittance.listincoming">Betaling/Remittering + */ +?> diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 31d848a3..888fa444 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -407,6 +407,11 @@ function update($args) { #print_r($accountplan); #print_r($args); + foreach (range(1, $args['field_count']) as $i) { + $invoiceinline_id = $args[$i]; + $invoiceinline_accountplan = $accounting->get_accountplan_object($args['invoiceinline_AccountPlanID_'.$invoiceinline_id]); + if (!$invoiceinline_accountplan->EnableCar && !empty($args['invoiceinline_CarID_'.$invoiceinline_id])) $args['invoiceinline_CarID_'.$invoiceinline_id] = 0; + } $tables_to_update = array( 'invoicein' => 'ID', @@ -506,6 +511,17 @@ public function add() { return $_lib['db']->db_insert_id(); } + /*************************************************************************** + * Delete incoming invoice + */ + public function delete() { + global $_lib; + $delete_invoiceinlines = "DELETE FROM invoiceinline WHERE ID = " . $this->ID . " AND ID IN (SELECT DISTINCT(ID) FROM invoicein WHERE JournalID IS NULL)"; + $_lib['db']->db_delete($delete_invoiceinlines); + $delete_invoicein = "DELETE FROM invoicein WHERE ID = " . $this->ID . " AND JournalID IS NULL"; + $_lib['db']->db_delete($delete_invoicein); + return true; + } ################################################################################################ #Journal the invoices automatically. #Set the invoices as registered in fakturabank diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index 705f5ccd..c7f59e73 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -191,21 +191,16 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { -Imported) { ?> - - - - - - - - + + + - @@ -283,8 +278,13 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { +Imported) { ?> + + + + @@ -308,6 +308,8 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { + @@ -333,6 +335,8 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { +*/ +?> Imported) { ?> @@ -669,8 +673,19 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { } } else { print "Faktura låst"; - } + } + ?> + + + + + diff --git a/modules/invoicein/view/list.php b/modules/invoicein/view/list.php index 850256c7..39cdec3d 100755 --- a/modules/invoicein/view/list.php +++ b/modules/invoicein/view/list.php @@ -126,6 +126,7 @@ + @@ -201,6 +202,7 @@ + diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index 349a4b79..abbe7b79 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -49,6 +49,12 @@ if($_lib['input']->getProperty('action_invoicein_journal')) { $ID = $invoicein->add(); header("Location: " . $_lib['sess']->dispatchs . "t=invoicein.edit&ID=" . $ID . "&inline=edit"); die(); +} elseif($_lib['input']->getProperty('action_invoicein_delete')) { + $deleted = $invoicein->delete(); + if ($deleted) { + header("Location: " . $_lib['sess']->dispatchs . "t=invoicein.list"); + die(); + } } // Remove an allowance/charge from invoice line if($_lib['input']->getProperty('action_invoicein_line_allowance_charge_delete')) { From c98dca43aed56501fa6cc7763e49af5b9bad03da Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Mon, 20 Jun 2016 11:25:57 +0200 Subject: [PATCH 16/28] Small fixes after code review --- modules/invoicein/model/invoicein.class.php | 2 +- modules/invoicein/view/edit.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 888fa444..a7cf5a14 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -407,7 +407,7 @@ function update($args) { #print_r($accountplan); #print_r($args); - foreach (range(1, $args['field_count']) as $i) { + for ($i = 0; $i < $args['field_count']; $i++) { $invoiceinline_id = $args[$i]; $invoiceinline_accountplan = $accounting->get_accountplan_object($args['invoiceinline_AccountPlanID_'.$invoiceinline_id]); if (!$invoiceinline_accountplan->EnableCar && !empty($args['invoiceinline_CarID_'.$invoiceinline_id])) $args['invoiceinline_CarID_'.$invoiceinline_id] = 0; diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index c7f59e73..766ffae2 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -284,7 +284,6 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - @@ -680,7 +679,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - + - + @@ -298,9 +298,9 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - + - + @@ -338,7 +338,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { ?> Imported) { ?> - + @@ -392,11 +392,11 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - + - + From a93e7c0a5cd14fc0119124dedae45a9f661e6354 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Fri, 29 Jul 2016 14:51:57 +0200 Subject: [PATCH 18/28] Fix more stuff --- modules/invoicein/model/invoicein.class.php | 4 +++- modules/invoicein/view/record.inc | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index a7cf5a14..72e21cfa 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -529,6 +529,8 @@ public function delete() { public function journal() { global $_lib, $accounting; + $countjournaled = 0; + if(is_array($this->iteratorH)) { $this->Journaled = 1; //#So that we immideately list the journaled vouchers @@ -869,7 +871,7 @@ public function journal() { } else { # Invoice is bookkept - print "Fakturaen er bilagsf¿rt
"; + print "Fakturaen er bilagsført
"; } } diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index abbe7b79..ed21e961 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -8,7 +8,6 @@ if($_lib['input']->getProperty('action_invoicein_linenew') || $_lib['input']->ge } if($_lib['input']->getProperty('action_invoicein_journal')) { - print "bilagsf¿r
"; $invoicein->journal(); } elseif($_lib['input']->getProperty('action_invoicein_update') or $_lib['input']->getProperty('action_invoiceline_new')) { From d4c2df619ad7d7092ebf1fda39e1cc3eef3de048 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Mon, 15 Aug 2016 13:30:24 +0200 Subject: [PATCH 19/28] Add invoice date validation to incoming invoice --- modules/invoice/view/listoutgoing.php | 2 +- modules/invoice/view/record.inc | 10 ++-------- modules/invoicein/view/record.inc | 4 ++++ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/modules/invoice/view/listoutgoing.php b/modules/invoice/view/listoutgoing.php index 719c41cb..37567204 100755 --- a/modules/invoice/view/listoutgoing.php +++ b/modules/invoice/view/listoutgoing.php @@ -138,7 +138,7 @@ submit(array('name' => 'action_auto_save','value' => "Lagre dato")) ?> is_valid_accountperiod($invoice_period, $_lib['sess']->get_person('AccessLevel')); - $valid_date = validDate($voucher_date); + $valid_date = $_lib['validation']->date($voucher_date); if ($valid_accountperiod && $valid_date) { list($nextJournalID, $nextMessage) = $accounting->get_next_available_journalid(array('type'=>'S', 'available' => true)); echo ' fakturanummer: ' . $nextJournalID; diff --git a/modules/invoice/view/record.inc b/modules/invoice/view/record.inc index 0175a4ab..ef4e1e97 100755 --- a/modules/invoice/view/record.inc +++ b/modules/invoice/view/record.inc @@ -1,11 +1,5 @@ format('Y-m-d') === $date; -} - $CustomerAccountPlanID = (int) $_POST["invoiceout_CustomerAccountPlanID_$InvoiceID"]; if ($CustomerAccountPlanID == 0 && $InvoiceID) { $CustomerAccountPlanID = $_lib['storage']->get_row(array('query' => 'SELECT CustomerAccountPlanID FROM invoiceout WHERE InvoiceID = ' . $InvoiceID))->CustomerAccountPlanID; @@ -31,7 +25,7 @@ if($_lib['input']->getProperty('action_invoice_update') or $_lib['input']->getPr } $invoice_date = $_POST['invoiceout_InvoiceDate_'.$InvoiceID]; - if (!validDate($invoice_date)) { + if (!$_lib['validation']->date($invoice_date)) { $_lib['message']->add('Ugyldig fakturadato '.$invoice_date.'!'); } else { $updated = false; @@ -78,7 +72,7 @@ elseif($_lib['input']->getProperty('action_auto_save')) { $message = ""; $voucher_periode = $_POST['voucher_period']; } - if (validDate($_POST['voucher_date'])) { + if ($_lib['validation']->date($_POST['voucher_date'])) { $voucher_date = $_POST['voucher_date']; } else { $voucher_date = "0000-00-00"; diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index ed21e961..3b9d3770 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -7,6 +7,10 @@ if($_lib['input']->getProperty('action_invoicein_linenew') || $_lib['input']->ge $_REQUEST['invoicein_SupplierAccountPlanID_' . $ID] = $supplier_accountplan->SupplierAccountPlanID; } +if (isset($_POST['invoicein_InvoiceDate_'.$ID]) && !$_lib['validation']->date($_POST['invoicein_InvoiceDate_'.$ID])) { + $_lib['message']->add('Ugyldig fakturadato '.$_POST['invoicein_InvoiceDate_'.$ID].'!'); +} + if($_lib['input']->getProperty('action_invoicein_journal')) { $invoicein->journal(); From ce3f06b0d6a0ec3ec9dcb71225dc208e61d75251 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Mon, 15 Aug 2016 14:11:46 +0200 Subject: [PATCH 20/28] Payment means should be printed as text --- modules/invoicein/view/list.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/invoicein/view/list.php b/modules/invoicein/view/list.php index 39cdec3d..2fe437e2 100755 --- a/modules/invoicein/view/list.php +++ b/modules/invoicein/view/list.php @@ -17,6 +17,9 @@ require_once "record.inc"; +// get text for each of the payment means codes +$PaymentMeansCodes = $_lib['db']->get_hashhash(array('query' => "select MenuValue, MenuChoice from confmenues where MenuName='PaymentMeans' and LanguageID='no' order by MenuChoice", 'key' => 'MenuValue', 'value' => 'MenuChoice')); +foreach($PaymentMeansCodes as &$PaymentMeansCode) $PaymentMeansCode = $PaymentMeansCode['MenuChoice']; print $_lib['sess']->doctype; ?> @@ -121,7 +124,7 @@
- + @@ -197,7 +200,7 @@ print $ReasonsInfo; } ?> - + From a87998cac8cd81dc6db005c6fd9eb15c59c018df Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Mon, 15 Aug 2016 14:36:06 +0200 Subject: [PATCH 21/28] Fix for missing accountplan id for invoice in lines --- modules/invoicein/model/invoicein.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 72e21cfa..11b9492f 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -407,7 +407,7 @@ function update($args) { #print_r($accountplan); #print_r($args); - for ($i = 0; $i < $args['field_count']; $i++) { + for ($i = 1; $i <= $args['field_count']; $i++) { $invoiceinline_id = $args[$i]; $invoiceinline_accountplan = $accounting->get_accountplan_object($args['invoiceinline_AccountPlanID_'.$invoiceinline_id]); if (!$invoiceinline_accountplan->EnableCar && !empty($args['invoiceinline_CarID_'.$invoiceinline_id])) $args['invoiceinline_CarID_'.$invoiceinline_id] = 0; From b8eed81db9161df99b592d1cc4695d546fabf664 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 17 Aug 2016 09:34:15 +0200 Subject: [PATCH 22/28] Recalculate invoice on save and delete Fix missing address on supplier Fix missing AccountPlanID --- modules/invoicein/model/invoicein.class.php | 62 +++++++++++++++------ modules/invoicein/view/record.inc | 2 - 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 11b9492f..7eb55200 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -286,7 +286,12 @@ function update($args) { $ID = $args['ID']; $AccountPlanID = $args['invoicein_SupplierAccountPlanID_' . $ID]; - $accountplan = $accounting->get_accountplan_object($AccountPlanID); + if (!is_numeric($AccountPlanID)) { + $_lib['message']->add('Leverandør ikke valgt!'); + $accountplan = NULL; + } else { + $accountplan = $accounting->get_accountplan_object($AccountPlanID); + } $invoicein = $_lib['storage']->get_row(array('query' => "select * from invoicein where ID='$ID'")); self::addVATPercentToAllowanceCharge($args); @@ -339,7 +344,7 @@ function update($args) { $args['invoicein_IName_' . $ID] = $accountplan->AccountName; if(!$accountplan->AccountName) $_lib['message']->add('Navn mangler på leverandør kontoplan'); $args['invoicein_IAddress_' . $ID] = $accountplan->Address; - if($accountplan->Address) $_lib['message']->add('Addresse mangler på leverandør kontoplan'); + if(!$accountplan->Address) $_lib['message']->add('Addresse mangler på leverandør kontoplan'); $args['invoicein_SupplierBankAccount_' . $ID] = $accountplan->DomesticBankAccount; if(!$accountplan->DomesticBankAccount) $_lib['message']->add('Kontonummer mangler på leverandør kontoplan'); } @@ -384,19 +389,10 @@ function update($args) { } } // set the period as the period the invoice date belongs to - if ($args['invoicein_InvoiceDate_'.$ID] && !empty($args['invoicein_InvoiceDate_'.$ID])) $args['invoicein_Period_'.$ID] = strftime("%Y-%m", strtotime($args['invoicein_InvoiceDate_'.$ID])); - // if manually created invoice(not imported from Fakturabank) - if (!$invoicein->Imported) { - // calculate total cost for invoice - $TotalCustPrice = 0; - for($i = 1; $i <= $args['field_count']; $i++) { - if (!isset($args['invoiceinline_UnitCostPrice_'.$line_id])) continue; - $line_id = $args[$i]; - $UnitCostPrice = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_UnitCostPrice_'.$line_id], 'return' => 'value')); - $QuantityDelivered = (float)$_lib['convert']->Amount(array('value' => $args['invoiceinline_QuantityDelivered_'.$line_id], 'return' => 'value')); - $TotalCustPrice += $UnitCostPrice * $QuantityDelivered; - } - $args['invoicein_TotalCustPrice_'.$ID] = $TotalCustPrice; + // and set due date if not set to X days after where X is credit days set for supplier + if ($args['invoicein_InvoiceDate_'.$ID] && !empty($args['invoicein_InvoiceDate_'.$ID])) { + $args['invoicein_Period_'.$ID] = strftime("%Y-%m", strtotime($args['invoicein_InvoiceDate_'.$ID])); + if ($args['invoicein_DueDate_'.$ID] == '0000-00-00' || $args['invoicein_DueDate_'.$ID] == '') $args['invoicein_DueDate_'.$ID] = strftime("%Y-%m-%d", strtotime($args['invoicein_InvoiceDate_'.$ID] . ' + ' . $accountplan->CreditDays . ' days')); } if(($args['invoicein_DepartmentID_'.$ID] === DB_NULL_PLACEHOLDER) && $accountplan->EnableDepartment == 1 && isset($accountplan->DepartmentID)) @@ -420,6 +416,28 @@ function update($args) { $this->line_allowance_charge_table => 'InvoiceLineAllowanceChargeID'); $_lib['db']->db_update_multi_table($args, $tables_to_update); + // if manually created invoice(not imported from Fakturabank) + // calculate total cost for invoice + if (!$invoicein->Imported) { + $TotalCustPrice = self::recalculate_total_cust_price($ID); + $_lib['db']->db_update_multi_table(array('invoicein_TotalCustPrice_'.$ID => $TotalCustPrice), array('invoicein' => 'ID')); + } + } + + // calculate total cost for invoice + function recalculate_total_cust_price($id) { + global $_lib; + + $total_cust_price = 0; + + $query_invoicelines = "select * from invoiceinline where ID='$id' and Active <> 0 order by LineID asc"; + $result_invoicelines = $_lib['db']->db_query($query_invoicelines); + while($invoicein_line = $_lib['db']->db_fetch_object($result_invoicelines)) { + $unit_cost_price = $invoicein_line->UnitCostPrice; + $quantity_delivered = $invoicein_line->QuantityDelivered; + $total_cust_price += $unit_cost_price * $quantity_delivered; + } + return $total_cust_price; } function linenew($args) { @@ -492,7 +510,19 @@ function linedelete($args) { $_lib['db']->db_delete($query); $invoicelineH['Active'] = 0; $invoicelineH['LineID'] = $args['LineID']; - return $_lib['storage']->store_record(array('table' => 'invoiceinline', 'data' => $invoicelineH, 'debug' => false)); + + $ret = $_lib['storage']->store_record(array('table' => 'invoiceinline', 'data' => $invoicelineH, 'debug' => false)); + + $ID = $args['ID']; + $invoicein = $_lib['storage']->get_row(array('query' => "select * from invoicein where ID='$ID'")); + // if manually created invoice(not imported from Fakturabank) + // calculate total cost for invoice + if (!$invoicein->Imported) { + $TotalCustPrice = self::recalculate_total_cust_price($ID); + $_lib['db']->db_update_multi_table(array('invoicein_TotalCustPrice_'.$ID => $TotalCustPrice), array('invoicein' => 'ID')); + } + + return $ret; } /*************************************************************************** diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index 3b9d3770..b76a4e37 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -34,11 +34,9 @@ if($_lib['input']->getProperty('action_invoicein_journal')) { $invoicein->update($_POST); } elseif($_lib['input']->getProperty('action_invoicein_linenew')) { - $invoicein->update($_REQUEST); $invoicein->linenew($_REQUEST); } elseif($_lib['input']->getProperty('action_invoicein_linedelete')) { - $invoicein->update($_REQUEST); $invoicein->linedelete($_REQUEST); } elseif($_lib['input']->getProperty('action_invoicein_remittance')) { From 49952c5f8584349b62808b6c0eb67934ee1cb11a Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 17 Aug 2016 12:19:27 +0200 Subject: [PATCH 23/28] Add warning errors to invoice incoming --- modules/invoicein/model/invoicein.class.php | 3 +++ modules/invoicein/view/edit.php | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 7eb55200..7c2a9c76 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -90,6 +90,9 @@ function fill($args) { if($this->ToDate) { $query .= " i.InvoiceDate <= '$this->ToDate' and "; } + if($this->ID) { + $query .= " i.ID = '$this->ID' and "; + } if($this->PaymentMeans) { $query .= " i.PaymentMeans = '$this->PaymentMeans' and "; } diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index c67a7941..1915d736 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -9,6 +9,7 @@ includelogic('invoicein/invoicein'); $invoicein = new logic_invoicein_invoicein($_lib['input']->request); +$invoicein_status = new logic_invoicein_invoicein($_lib['input']->request); $tax_categories = array(); @@ -29,6 +30,11 @@ #print "Get invoice " . $get_invoice . "
\n"; $invoicein = $_lib['storage']->get_row(array('query' => $get_invoice)); +// invoice with the specified id and fill its status +$invoicein_status->fill(array()); +$invoicein_status = $invoicein_status->current(); +if (!empty($invoicein_status->Status)) $_lib['message']->add($invoicein_status->Status); + $get_invoicefrom = "select * from accountplan where AccountPlanID=" . (int) $invoicein->SupplierAccountPlanID; #print "get_invoicefrom " . $get_invoicefrom . "
\n"; $invoicein->from = $_lib['storage']->get_row(array('query' => $get_invoicefrom)); From 070abd1153fcf3947e3ff33f29b759194fe62acd Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 17 Aug 2016 12:25:12 +0200 Subject: [PATCH 24/28] Remove more remittance stuff --- modules/invoicein/view/list.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/modules/invoicein/view/list.php b/modules/invoicein/view/list.php index 2fe437e2..58a201a8 100755 --- a/modules/invoicein/view/list.php +++ b/modules/invoicein/view/list.php @@ -80,11 +80,6 @@
- - - - - @@ -127,7 +122,6 @@ - @@ -203,7 +197,6 @@ - From 71bd82ba4ae970b33c71989fb05632cac2fd988a Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Thu, 8 Sep 2016 12:23:55 +0200 Subject: [PATCH 25/28] Additional fixes after code review --- modules/department/model/department.class.php | 12 ++++++++---- modules/invoicein/model/invoicein.class.php | 14 ++++++++++++-- modules/invoicein/view/list.php | 2 +- modules/invoicein/view/record.inc | 7 ------- modules/project/model/project.class.php | 12 ++++++++---- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/modules/department/model/department.class.php b/modules/department/model/department.class.php index 48ec7c09..14f6dffe 100644 --- a/modules/department/model/department.class.php +++ b/modules/department/model/department.class.php @@ -10,10 +10,14 @@ public function __construct($args) { public function getDepartmentIDAndName() { global $_lib; - $query_department = sprintf("SELECT * FROM department WHERE DepartmentID = %d", $this->DepartmentID); - $department_row = $_lib['storage']->get_row(array('query' => $query_department)); - $department_id_and_name = $department_row->DepartmentID . " - " . $department_row->DepartmentName; - return $department_id_and_name; + if (isset($this->DepartmentID)) { + $query_department = sprintf("SELECT * FROM department WHERE DepartmentID = %d", $this->DepartmentID); + $department_row = $_lib['storage']->get_row(array('query' => $query_department)); + $department_id_and_name = $department_row->DepartmentID . " - " . $department_row->DepartmentName; + return $department_id_and_name; + } else { + return ""; + } } } ?> diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 7c2a9c76..7ea5e94e 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -123,7 +123,6 @@ function fill($args) { $row->Status .= "Er allerede bilagsført"; } else { - $row->JournalID = $NextAvailableJournalID++; $row->Journal = true; $row->Class = 'green'; } @@ -170,6 +169,12 @@ function fill($args) { $row->Class = 'red'; } + if ($row->TotalCustPrice == 0) { + $row->Status .= "Faktura med beløp 0"; + $row->Journal = false; + } + + if (!$row->Journaled && $row->Journal) $row->JournalID = $NextAvailableJournalID++; $row->VoucherType = $this->VoucherType; $this->iteratorH[] = $row; } @@ -350,6 +355,10 @@ function update($args) { if(!$accountplan->Address) $_lib['message']->add('Addresse mangler på leverandør kontoplan'); $args['invoicein_SupplierBankAccount_' . $ID] = $accountplan->DomesticBankAccount; if(!$accountplan->DomesticBankAccount) $_lib['message']->add('Kontonummer mangler på leverandør kontoplan'); + $args['invoicein_DZipCode_' . $ID] = $accountplan->ZipCode; + $args['invoicein_DName_' . $ID] = $accountplan->AccountName; + $args['invoicein_DCity_' . $ID] = $accountplan->City; + $args['invoicein_DAddress_' . $ID] = $accountplan->Address; } if(!$invoicein->DZipCode) { $args['invoicein_DZipCode_' . $ID] = $accountplan->ZipCode; @@ -377,6 +386,7 @@ function update($args) { $args['invoicein_CustomerAccountPlanID_' . $ID] = $_lib['sess']->get_companydef('OrgNumber'); } $args['invoicein_RemittanceAmount_'.$ID] = $args['invoicein_TotalCustPrice_'.$ID]; + // update UnitCustPrice(unit price without tax) from UnitCostPrice(unit price with tax) if it is set for($i = 1; $i <= $args['field_count']; $i++) { $line_id = $args[$i]; @@ -539,7 +549,7 @@ public function add() { $old_pattern = array("/[^0-9]/"); $new_pattern = array(""); $dataH['CustomerAccountPlanID'] = strtolower(preg_replace($old_pattern, $new_pattern , $_lib['sess']->get_companydef('OrgNumber'))); - $add_invoicein = "INSERT INTO invoicein(ID, VoucherType, InsertedByPersonID, InsertedDateTime, Imported) VALUES(NULL, 'U',". $_lib['sess']->get_person('PersonID') .", NOW(), 0)"; + $add_invoicein = "INSERT INTO invoicein(ID, VoucherType, InvoiceDate, InsertedByPersonID, InsertedDateTime, Imported) VALUES(NULL, 'U', '" . $_lib['sess']->get_session('LoginFormDate') . "', " . $_lib['sess']->get_person('PersonID') . ", NOW(), 0)"; $_lib['db']->db_insert($add_invoicein); return $_lib['db']->db_insert_id(); } diff --git a/modules/invoicein/view/list.php b/modules/invoicein/view/list.php index 58a201a8..7974107d 100755 --- a/modules/invoicein/view/list.php +++ b/modules/invoicein/view/list.php @@ -160,7 +160,7 @@ - + diff --git a/modules/invoicein/view/record.inc b/modules/invoicein/view/record.inc index b76a4e37..221127c6 100755 --- a/modules/invoicein/view/record.inc +++ b/modules/invoicein/view/record.inc @@ -39,13 +39,6 @@ if($_lib['input']->getProperty('action_invoicein_journal')) { } elseif($_lib['input']->getProperty('action_invoicein_linedelete')) { $invoicein->linedelete($_REQUEST); -} elseif($_lib['input']->getProperty('action_invoicein_remittance')) { - - includelogic('remittance/remittance'); - - $rem = new logic_remittance_remittance($_POST); - print $rem->fill(); - print $rem->pay(); } elseif($_lib['input']->getProperty('action_invoicein_add')) { $ID = $invoicein->add(); header("Location: " . $_lib['sess']->dispatchs . "t=invoicein.edit&ID=" . $ID . "&inline=edit"); diff --git a/modules/project/model/project.class.php b/modules/project/model/project.class.php index 26c5f5b7..3fffef6b 100644 --- a/modules/project/model/project.class.php +++ b/modules/project/model/project.class.php @@ -10,10 +10,14 @@ public function __construct($args) { public function getProjectIDAndName() { global $_lib; - $query_project = sprintf("SELECT * FROM project WHERE ProjectID = %d", $this->ProjectID); - $project_row = $_lib['storage']->get_row(array('query' => $query_project)); - $project_id_and_name = $project_row->ProjectID . " - " . $project_row->Heading; - return $project_id_and_name; + if (isset($this->ProjectID)) { + $query_project = sprintf("SELECT * FROM project WHERE ProjectID = %d", $this->ProjectID); + $project_row = $_lib['storage']->get_row(array('query' => $query_project)); + $project_id_and_name = $project_row->ProjectID . " - " . $project_row->Heading; + return $project_id_and_name; + } else { + return ""; + } } } ?> From ee52e7ede0210c5c8c0b9977b2719d0070c2792c Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 7 Dec 2016 13:16:07 +0100 Subject: [PATCH 26/28] Fix invoicein show after rebase --- modules/invoicein/view/edit.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index 1915d736..5df7968d 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -67,10 +67,16 @@ get_session('LoginFormDate'); -$supplier_accountplan = $accounting->get_accountplan_object($invoicein->SupplierAccountPlanID); -$allowancecharge_query = "SELECT ac.AllowanceChargeID, ac.ChargeIndicator, a.AccountPlanID as InAccountPlanID, ac.Reason, ac.Amount, v.Percent as InVatPercent, case when a.VatID < 40 THEN a.VatID + 30 ELSE a.VatID END as InVatID +if (!is_null($invoicein->SupplierAccountPlanID)) { + $supplier_accountplan = $accounting->get_accountplan_object($invoicein->SupplierAccountPlanID); + $allowancecharge_query = "SELECT ac.AllowanceChargeID, ac.ChargeIndicator, a.AccountPlanID as InAccountPlanID, ac.Reason, ac.Amount, v.Percent as InVatPercent, case when a.VatID < 40 THEN a.VatID + 30 ELSE a.VatID END as InVatID FROM allowancecharge ac LEFT JOIN accountplan a ON a.AccountPlanID = " . $supplier_accountplan->MotkontoResultat1 . " LEFT JOIN vat v ON v.VatID = a.VatID AND v.Active = 1 AND v.ValidFrom <= '" . $date . "' AND v.ValidTo >= '" . $date . "' WHERE ac.Active = 1"; +} else { + $allowancecharge_query = "SELECT ac.AllowanceChargeID, ac.ChargeIndicator, NULL as InAccountPlanID, ac.Reason, ac.Amount, NULL as InVatPercent, NULL as InVatID + FROM allowancecharge ac + WHERE ac.Active = 1"; +} $allowancecharge_result = $_lib['db']->db_query($allowancecharge_query); while($allowance_charge = $_lib['db']->db_fetch_assoc($allowancecharge_result)) { $allowances_charges[$allowance_charge["AllowanceChargeID"]] = $allowance_charge; From 9bb74fee2e238b1862b73b20cd95e348536c0626 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Wed, 8 Feb 2017 09:58:24 +0100 Subject: [PATCH 27/28] Fix recalculate on save an some alignment on edit page --- modules/invoicein/model/invoicein.class.php | 27 +++++++++++++++++---- modules/invoicein/view/edit.php | 12 +++++---- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/modules/invoicein/model/invoicein.class.php b/modules/invoicein/model/invoicein.class.php index 7ea5e94e..cb2d9864 100644 --- a/modules/invoicein/model/invoicein.class.php +++ b/modules/invoicein/model/invoicein.class.php @@ -304,7 +304,6 @@ function update($args) { self::addVATPercentToAllowanceCharge($args); self::invertAllAllowanceAmounts($args); -<<<<<<< HEAD self::calculatePriceAmountQuantity($args); if(!$invoicein->IZipCode) { if($accountplan->ZipCode) { @@ -341,6 +340,7 @@ function update($args) { } else { $_lib['message']->add('Addresse mangler på leverandør kontoplan'); } + } $changed_supplier_accountplan = $invoicein->SupplierAccountPlanID != $AccountPlanID; // update all supplier related info on the invoice @@ -441,16 +441,33 @@ function update($args) { function recalculate_total_cust_price($id) { global $_lib; - $total_cust_price = 0; + $total = 0; $query_invoicelines = "select * from invoiceinline where ID='$id' and Active <> 0 order by LineID asc"; $result_invoicelines = $_lib['db']->db_query($query_invoicelines); while($invoicein_line = $_lib['db']->db_fetch_object($result_invoicelines)) { - $unit_cost_price = $invoicein_line->UnitCostPrice; + $unit_cust_price = $invoicein_line->UnitCustPrice; $quantity_delivered = $invoicein_line->QuantityDelivered; - $total_cust_price += $unit_cost_price * $quantity_delivered; + $line_cust_price = $unit_cust_price * $quantity_delivered; + + // include line's allowance/charge + $query_invoicelines_allowance_charge = "select * from invoicelineallowancecharge where InvoiceLineID='$invoicein_line->LineID' and InvoiceType = 'in'"; + $result_invoicelines_allowance_charge = $_lib['db']->db_query($query_invoicelines_allowance_charge); + while($line_ac = $_lib['db']->db_fetch_object($result_invoicelines_allowance_charge)) { + $line_cust_price += (($line_ac->ChargeIndicator == 1) ? 1 : -1) * $line_ac->Amount; + } + $line_cost_price = $line_cust_price * (1 + ($invoicein_line->Vat / 100.0)); + $total += $line_cost_price; + } + + // include ivoice's allowance/charge + $query_invoice_allowance_charge = "select * from invoiceallowancecharge where InvoiceID='$id' and InvoiceType = 'in'"; + $result_invoice_allowance_charge = $_lib['db']->db_query($query_invoice_allowance_charge); + while($ac = $_lib['db']->db_fetch_object($result_invoice_allowance_charge)) { + $ac_amount =(($ac->ChargeIndicator == 1) ? 1 : -1) * $ac->Amount * ( 1 + ($ac->VatPercent / 100.0)); + $total += $ac_amount; } - return $total_cust_price; + return $total; } function linenew($args) { diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index 5df7968d..ff64fdee 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -542,7 +542,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { ?> - AllowanceChargeType == 'line') print ''; ?> + AllowanceChargeType == 'line') print ''; ?> + $tabindex++)); ?> - + @@ -638,7 +640,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { } } ?> - + @@ -666,7 +668,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { - +
BilagsnummerVoucherType&voucher_JournalID=$invoicein->JournalID"; ?>&action_journalid_search=1" target="_new">VoucherType ?>JournalID ?>Bilagsnummertext(array('table'=>$db_table, 'field'=>'JournalID', 'pk' => $ID, 'value'=>$invoicein->JournalID, 'width'=>'30', 'tabindex' => $tabindex++)) ?>
BilagsnummerJournalID ?> + JournalID) { ?> + VoucherType&voucher_JournalID=$invoicein->JournalID"; ?>&action_journalid_search=1" target="_new">VoucherType ?>JournalID ?>
Fakturanummer text(array('table'=>$db_table, 'field'=>'InvoiceNumber', 'pk' => $ID, 'value'=>$invoicein->InvoiceNumber, 'width'=>'30', 'tabindex' => $tabindex++)) ?>
Forfalls dato text(array('table'=>$db_table, 'field'=>'DueDate', 'pk'=>$ID, 'value'=>substr($invoicein->DueDate,0,10), 'width'=>'30', 'tabindex'=> $tabindex++)) ?>Er med i reisegarantifondet Checkbox(array('table'=>$db_table, 'field'=>'isReisegarantifond', 'pk'=>$ID, 'value'=>$invoicein->isReisegarantifond, 'tabindex' => $tabindex++)) ?>
Vår ref.Kommentar (intern) TextArea(array('table'=>$db_table, 'field'=>'CommentInternal', 'pk'=>$ID, 'value'=>$invoicein->CommentInternal, 'tabindex'=>$tabindex++, 'height'=>'5', 'width'=>'80')) ?>
Remitteringsstatus RemittanceStatus ?>RemittanceDaySequence RemittanceDaySequence ?>
Opprettet på
+ get_person('AccessLevel') >= 4) && (!$invoicein->Imported) && (!$invoicein->JournalID)) { + print $_lib['form3']->Input(array('type'=>'submit', 'name'=>'action_invoicein_delete', 'value'=>'Slett faktura (D)', 'accesskey'=>'D', 'tabindex' => $tabindex++)); + } ?> +
Linje sumFakturabank Remittering StatusOpprettet som
ExternalID) { ?>/invoices/ExternalID ?>" title="Vis i Fakturabank" target="_new">Vis i fakturabank RemittanceStatus ?> Status ?>Imported) ? 'importert' : 'manuelt'; ?>
Vår ref.
get_person('AccessLevel') >= 4) && (!$invoicein->Imported) && (!$invoicein->JournalID)) { + if($accounting->is_valid_accountperiod($_lib['date']->get_this_period($invoicein->Period), $_lib['sess']->get_person('AccessLevel')) && ($_lib['sess']->get_person('AccessLevel') >= 4) && (!$invoicein->Imported) && (!$invoicein->JournalID)) { print $_lib['form3']->Input(array('type'=>'submit', 'name'=>'action_invoicein_delete', 'value'=>'Slett faktura (D)', 'accesskey'=>'D', 'tabindex' => $tabindex++)); } ?> From 542c125bdb3f008e372deb3331b3a1d94e378996 Mon Sep 17 00:00:00 2001 From: Mladen Drobnjakovic Date: Fri, 29 Jul 2016 12:39:50 +0200 Subject: [PATCH 17/28] Fix typos on invoicein.edit page --- modules/invoicein/view/edit.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index 766ffae2..c67a7941 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -226,9 +226,9 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { select(array('table'=>$db_table, 'field'=>'PaymentMeans', 'pk' => $ID, 'value' => $invoicein->PaymentMeans, 'query' => 'form.PaymentMeans', 'width' => 30, 'tabindex' => $tabindex++)) ?>
Org nrOrgnr from->OrgNumber ?>Org nrOrgnr to->OrgNumber ?>
department_menu2(array('table' => $db_table, 'field' => 'DepartmentID', 'pk'=>$ID, 'value' => $invoicein->DepartmentID, 'unset' => true)); ?>
Leverings betingelseLeveringsbetingelse text(array('table'=>$db_table, 'field'=>'DeliveryCondition', 'pk'=>$ID, 'value'=>$invoicein->DeliveryCondition, 'width'=>'30', 'tabindex'=>$tabindex++)) ?>Betalings betingelseBetalingsbetingelse text(array('table'=>$db_table, 'field'=>'PaymentCondition', 'pk'=>$ID, 'value'=>$invoicein->PaymentCondition, 'width'=>'30', 'tabindex'=>$tabindex++)) ?>
Opprettet påOpprettet InsertedDateTime ?> Opprettet av PersonIDToName($invoicein->InsertedByPersonID) ?>
Konto ProduktNrProdukt navnProduktnavn Bil Antall EnhetsprisEnhetspris inklusiv MVAEnhetspris inkl. MVA MVA MVA beløp Beløp U/MVAAvdeling Årsaksinformasjon BankkontoBetalingBetaling KID Fakturabank Remittering SupplierBankAccount ?>PaymentMeans ?>PaymentMeans]; ?> KID ?> ExternalID) { ?>/invoices/ExternalID ?>" title="Vis i Fakturabank" target="_new">Vis i fakturabank RemittanceStatus ?>Til: date(array('name' => 'ToDate', 'field' => 'ToDate', 'form_name' => 'invoice_edit1', 'value' => $invoicein->ToDate)) ?>
Status:text(array('name' => 'RemittanceStatus', 'value' => $invoicein->RemittanceStatus)) ?>
Fakturanummer: text(array('name' => 'InvoiceNumber', 'value' => $invoicein->InvoiceNumber)) ?>Betaling KID FakturabankRemittering Status Opprettet som
PaymentMeans]; ?> KID ?> ExternalID) { ?>/invoices/ExternalID ?>" title="Vis i Fakturabank" target="_new">Vis i fakturabankRemittanceStatus ?> Status ?> Imported) ? 'importert' : 'manuelt'; ?>
InvoiceNumber ?>InvoiceNumber) print $InvoiceO->InvoiceNumber; else print '-'; ?> InvoiceDate ?> Period ?> FirmaID ?> text(array( @@ -551,6 +551,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { 'pk' => $acrow->InvoiceLineAllowanceChargeID, 'value' => $_lib['format']->Amount(($acrow->ChargeIndicator == 1?1:-1)*$acrow->Amount), 'class' => 'number', + 'width' => '15', 'OnChange' => 'updateInvoiceLineAllowanceChargeData(this)', 'tabindex' => $tabindex++)); ?> @@ -565,7 +566,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { } } ?> -


InvoiceAllowanceChargeID . '" >' . $_lib['format']->Percent($acrow->VatPercent) . ''; @@ -627,6 +628,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) { 'pk' => $acrow->InvoiceAllowanceChargeID, 'value' => $_lib['format']->Amount(($acrow->ChargeIndicator == 1?1:-1)*$acrow->Amount), 'class' => 'number', + 'width' => '15', 'tabindex' => $tabindex++)); ?>


+ ExternalID) { ?>/invoices/ExternalID ?>" title="Vis i Fakturabank" target="_new">Vis i fakturabank Date: Wed, 26 Apr 2017 16:05:54 +0200 Subject: [PATCH 28/28] Renumber migration --- ...voicein_table.sql => 175_imported_to_invoicein_table.sql} | 0 modules/invoicein/view/edit.php | 5 +++-- 2 files changed, 3 insertions(+), 2 deletions(-) rename db/changes/{127_imported_to_invoicein_table.sql => 175_imported_to_invoicein_table.sql} (100%) diff --git a/db/changes/127_imported_to_invoicein_table.sql b/db/changes/175_imported_to_invoicein_table.sql similarity index 100% rename from db/changes/127_imported_to_invoicein_table.sql rename to db/changes/175_imported_to_invoicein_table.sql diff --git a/modules/invoicein/view/edit.php b/modules/invoicein/view/edit.php index ff64fdee..484d72de 100755 --- a/modules/invoicein/view/edit.php +++ b/modules/invoicein/view/edit.php @@ -67,10 +67,10 @@ get_session('LoginFormDate'); -if (!is_null($invoicein->SupplierAccountPlanID)) { +if (!is_null($invoicein->SupplierAccountPlanID) && $invoicein->SupplierAccountPlanID > 0) { $supplier_accountplan = $accounting->get_accountplan_object($invoicein->SupplierAccountPlanID); $allowancecharge_query = "SELECT ac.AllowanceChargeID, ac.ChargeIndicator, a.AccountPlanID as InAccountPlanID, ac.Reason, ac.Amount, v.Percent as InVatPercent, case when a.VatID < 40 THEN a.VatID + 30 ELSE a.VatID END as InVatID - FROM allowancecharge ac LEFT JOIN accountplan a ON a.AccountPlanID = " . $supplier_accountplan->MotkontoResultat1 . " LEFT JOIN vat v ON v.VatID = a.VatID AND v.Active = 1 AND v.ValidFrom <= '" . $date . "' AND v.ValidTo >= '" . $date . "' + FROM allowancecharge ac LEFT JOIN accountplan a ON a.AccountPlanID = " . (int)$supplier_accountplan->MotkontoResultat1 . " LEFT JOIN vat v ON v.VatID = a.VatID AND v.Active = 1 AND v.ValidFrom <= '" . $date . "' AND v.ValidTo >= '" . $date . "' WHERE ac.Active = 1"; } else { $allowancecharge_query = "SELECT ac.AllowanceChargeID, ac.ChargeIndicator, NULL as InAccountPlanID, ac.Reason, ac.Amount, NULL as InVatPercent, NULL as InVatID @@ -296,6 +296,7 @@ function updatePeriodFromInvoiceDate(invoice_date_element) {
Vår ref.