2
0
forked from Wavyzz/dolibarr

Fix: Function to find last invoice must look only into number

This commit is contained in:
Laurent Destailleur
2010-12-13 23:50:51 +00:00
parent 09fc3ba4c5
commit dc547cbbda
2 changed files with 770 additions and 727 deletions

View File

@@ -3,13 +3,16 @@ CHARSET=UTF-8
Bill=Invoice Bill=Invoice
Bills=Invoices Bills=Invoices
BillsCustomers=Customer's invoices BillsCustomers=Customer's invoices
BillsCustomer=Customer's invoice
BillsSuppliers=Supplier's invoices BillsSuppliers=Supplier's invoices
BillsCustomersUnpaid=Unpaid customer's invoices BillsCustomersUnpaid=Unpaid customer's invoices
BillsCustomersUnpaidForCompany=Unpaid customer's invoices for %s BillsCustomersUnpaidForCompany=Unpaid customer's invoices for %s
BillsSuppliersUnpaid=Unpaid supplier's invoices BillsSuppliersUnpaid=Unpaid supplier's invoices
BillsUnpaid=Unpaid BillsUnpaid=Unpaid
BillsLate=Late payments
BillsStatistics=Customer's invoices statistics BillsStatistics=Customer's invoices statistics
BillsStatisticsSuppliers=Supplier's invoices statistics BillsStatisticsSuppliers=Supplier's invoices statistics
DisabledBecauseNotErasable=Disabled because can not be erased
InvoiceStandard=Standard invoice InvoiceStandard=Standard invoice
InvoiceStandardAsk=Standard invoice InvoiceStandardAsk=Standard invoice
InvoiceStandardDesc=This kind of invoice is the common invoice. InvoiceStandardDesc=This kind of invoice is the common invoice.

View File

@@ -350,9 +350,10 @@ function array2table($data,$tableMarkup=1,$tableoptions='',$troptions='',$tdopti
* @param $where To add a filter on selection (for exemple to filter on invoice types) * @param $where To add a filter on selection (for exemple to filter on invoice types)
* @param $objsoc The company that own the object we need a counter for * @param $objsoc The company that own the object we need a counter for
* @param $date Date to use for the {y},{m},{d} tags. * @param $date Date to use for the {y},{m},{d} tags.
* @param $mode 'next' for next value or 'last' for last value
* @return string New value * @return string New value
*/ */
function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='') function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$mode='next')
{ {
global $conf; global $conf;
@@ -490,6 +491,44 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='')
} }
else dol_print_error($db); else dol_print_error($db);
if (empty($counter) || preg_match('/[^0-9]/i',$counter)) $counter=$maskoffset; if (empty($counter) || preg_match('/[^0-9]/i',$counter)) $counter=$maskoffset;
if ($mode == 'last')
{
$counterpadded=str_pad($counter,dol_strlen($maskcounter),"0",STR_PAD_LEFT);
// Define $maskLike
$maskLike = dol_string_nospecial($mask);
$maskLike = str_replace("%","_",$maskLike);
// Replace protected special codes with matching number of _ as wild card caracter
$maskLike = preg_replace('/\{yyyy\}/i','____',$maskLike);
$maskLike = preg_replace('/\{yy\}/i','__',$maskLike);
$maskLike = preg_replace('/\{y\}/i','_',$maskLike);
$maskLike = preg_replace('/\{mm\}/i','__',$maskLike);
$maskLike = preg_replace('/\{dd\}/i','__',$maskLike);
$maskLike = str_replace(dol_string_nospecial('{'.$masktri.'}'),$counterpadded,$maskLike);
if ($maskrefclient) $maskLike = str_replace(dol_string_nospecial('{'.$maskrefclient.'}'),str_pad("",dol_strlen($maskrefclient),"_"),$maskLike);
//if ($masktype) $maskLike = str_replace(dol_string_nospecial('{'.$masktype.'}'),str_pad("",dol_strlen($masktype),"_"),$maskLike);
if ($masktype) $maskLike = str_replace(dol_string_nospecial('{'.$masktype.'}'),$masktype_value,$maskLike);
$ref='';
$sql = "SELECT facnumber as ref";
$sql.= " FROM ".MAIN_DB_PREFIX."facture";
$sql.= " WHERE facnumber LIKE '".$maskLike."'";
$sql.= " AND entity = ".$conf->entity;
dol_syslog("mod_facture_terre::getNextValue sql=".$sql);
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
if ($obj) $ref = $obj->ref;
}
else dol_print_error($db);
$numFinal=$ref;
}
else if ($mode == 'next')
{
$counter++; $counter++;
if ($maskrefclient_maskcounter) if ($maskrefclient_maskcounter)
@@ -569,6 +608,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='')
$masktype_maskafter=$masktype_value; $masktype_maskafter=$masktype_value;
$numFinal = str_replace($masktype_maskbefore,$masktype_maskafter,$numFinal); $numFinal = str_replace($masktype_maskbefore,$masktype_maskafter,$numFinal);
} }
}
dol_syslog("functions2::get_next_value return ".$numFinal,LOG_DEBUG); dol_syslog("functions2::get_next_value return ".$numFinal,LOG_DEBUG);
return $numFinal; return $numFinal;