**/
class reflines_db extends data_set {
- function reflines_db()
+ function __construct()
{
$this->set_validator('prefix:ui:_check_prefix', _("This prefix conflicts with another one already defined. Prefix have to be unambigous."));
$this->set_validator('prefix:ui:_check_template', _("Invalid template format."));
$this->set_validator('trans_type:ui:required', _("Transaction type cannot be empty."));
$this->set_validator('pattern:ui:required', _("Next reference cannot be empty."));
- $this->data_set('reflines',
+ parent::__construct('reflines',
array('trans_type', 'prefix', 'description', 'default', 'pattern', 'id', 'inactive'),
'id');
}
function find_refline_id($reference, $type, $fallback=true)
{
$sql = "SELECT * FROM ".TB_PREF."reflines WHERE trans_type=".db_escape($type)
- ." AND CHAR_LENGTH(`prefix`) AND LEFT('$reference', CHAR_LENGTH(`prefix`)) = `prefix`";
+ ." AND CHAR_LENGTH(`prefix`) AND LEFT(".db_escape($reference).", CHAR_LENGTH(`prefix`)) = `prefix`";
if ($fallback) // if not found return refline with empty prefix
$sql .= " UNION SELECT * FROM ".TB_PREF."reflines WHERE trans_type=".db_escape($type)." AND `prefix`=''";
$ret = db_query($sql, "cannot check reference line id");
function save_next($type, $reference, $line=null)
{
+ begin_transaction(__CLASS__.':'.__METHOD__, func_get_args());
+
$sql = "UPDATE ".TB_PREF."reflines SET pattern=SUBSTRING(" . db_escape(trim($reference)) .", LENGTH(`prefix`)+1)"
. " WHERE trans_type = ".db_escape($type)." AND ";
else
$sql .= "`default`";
- return db_query($sql, "The next transaction ref for $type could not be updated");
+ $result = db_query($sql, "The next transaction ref for $type could not be updated");
+ commit_transaction();
+ return $result;
}
}