644 lines
22 KiB
PHP
644 lines
22 KiB
PHP
|
|
<?php
|
||
|
|
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
|
||
|
|
/*****************************************************************************
|
||
|
|
* The contents of this file are subject to the RECIPROCAL PUBLIC LICENSE
|
||
|
|
* Version 1.1 ("License"); You may not use this file except in compliance
|
||
|
|
* with the License. You may obtain a copy of the License at
|
||
|
|
* http://opensource.org/licenses/rpl.php. Software distributed under the
|
||
|
|
* License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
|
||
|
|
* either express or implied.
|
||
|
|
*
|
||
|
|
* You may:
|
||
|
|
* a) Use and distribute this code exactly as you received without payment or
|
||
|
|
* a royalty or other fee.
|
||
|
|
* b) Create extensions for this code, provided that you make the extensions
|
||
|
|
* publicly available and document your modifications clearly.
|
||
|
|
* c) Charge for a fee for warranty or support or for accepting liability
|
||
|
|
* obligations for your customers.
|
||
|
|
*
|
||
|
|
* You may NOT:
|
||
|
|
* a) Charge for the use of the original code or extensions, including in
|
||
|
|
* electronic distribution models, such as ASP (Application Service
|
||
|
|
* Provider).
|
||
|
|
* b) Charge for the original source code or your extensions other than a
|
||
|
|
* nominal fee to cover distribution costs where such distribution
|
||
|
|
* involves PHYSICAL media.
|
||
|
|
* c) Modify or delete any pre-existing copyright notices, change notices,
|
||
|
|
* or License text in the Licensed Software
|
||
|
|
* d) Assert any patent claims against the Licensor or Contributors, or
|
||
|
|
* which would in any way restrict the ability of any third party to use the
|
||
|
|
* Licensed Software.
|
||
|
|
*
|
||
|
|
* You must:
|
||
|
|
* a) Document any modifications you make to this code including the nature of
|
||
|
|
* the change, the authors of the change, and the date of the change.
|
||
|
|
* b) Make the source code for any extensions you deploy available via an
|
||
|
|
* Electronic Distribution Mechanism such as FTP or HTTP download.
|
||
|
|
* c) Notify the licensor of the availability of source code to your extensions
|
||
|
|
* and include instructions on how to acquire the source code and updates.
|
||
|
|
* d) Grant Licensor a world-wide, non-exclusive, royalty-free license to use,
|
||
|
|
* reproduce, perform, modify, sublicense, and distribute your extensions.
|
||
|
|
*
|
||
|
|
* The Original Code is: CommuniCore
|
||
|
|
* Olavo Farias
|
||
|
|
* 2006-04-7 olavo.farias@gmail.com
|
||
|
|
*
|
||
|
|
* The Initial Developer of the Original Code is CommuniCore.
|
||
|
|
* Portions created by CommuniCore are Copyright (C) 2005 CommuniCore Ltda
|
||
|
|
* All Rights Reserved.
|
||
|
|
********************************************************************************/
|
||
|
|
require_once('data/SugarBean.php');
|
||
|
|
require_once('include/utils.php');
|
||
|
|
|
||
|
|
// SHOULD INCLUDE SELECTIVELY
|
||
|
|
|
||
|
|
$GLOBALS['db'] = new MysqlManager();
|
||
|
|
$GLOBALS['db']->connect();
|
||
|
|
|
||
|
|
class EcmDocumentTemplate extends SugarBean {
|
||
|
|
|
||
|
|
var $field_name_map = array();
|
||
|
|
// STANDARD FIELDS
|
||
|
|
var $id;
|
||
|
|
var $date_entered;
|
||
|
|
var $date_modified;
|
||
|
|
var $modified_user_id;
|
||
|
|
var $assigned_user_id;
|
||
|
|
var $name;
|
||
|
|
|
||
|
|
//TABLE COLUMNS
|
||
|
|
var $place_of_register;
|
||
|
|
|
||
|
|
var $logo_path;
|
||
|
|
|
||
|
|
var $logo_id;
|
||
|
|
var $logo_name;
|
||
|
|
|
||
|
|
var $account_name;
|
||
|
|
var $account_id;
|
||
|
|
var $account_number;
|
||
|
|
|
||
|
|
//footer
|
||
|
|
var $footer_account;
|
||
|
|
var $footer_address;
|
||
|
|
var $footer_phone;
|
||
|
|
var $footer_fax;
|
||
|
|
var $footer_krs;
|
||
|
|
var $footer_nip;
|
||
|
|
var $footer_regon;
|
||
|
|
var $footer_capital;
|
||
|
|
var $footer_management;
|
||
|
|
var $footer_swift;
|
||
|
|
var $footer_bankname;
|
||
|
|
var $footer_vatid;
|
||
|
|
var $document_number_format_id;
|
||
|
|
var $documents_per_day_id;
|
||
|
|
var $documents_per;
|
||
|
|
// var $document_number_letter;
|
||
|
|
// var $correct_number_letter;
|
||
|
|
var $ecmlanguage;
|
||
|
|
var $footer_text;
|
||
|
|
var $header_text;
|
||
|
|
var $show_header_on_all_pages;
|
||
|
|
var $show_footer_on_all_pages;
|
||
|
|
|
||
|
|
var $template_files_defs;
|
||
|
|
var $docs=array("EcmInsideOrders","EcmQuotes","EcmSales","EcmPurchaseOrders","EcmDeliveryNotes","EcmInvoiceOuts","EcmReceiptOuts","EcmStockDocIns","EcmStockDocOuts", "EcmStockDocInsideIns","EcmStockDocInsideOuts", "EcmStockDocMoves", "EcmTemplates", "EcmDocuments","EcmStockDocCorrects");
|
||
|
|
|
||
|
|
|
||
|
|
var $pdf;
|
||
|
|
var $account;
|
||
|
|
var $mfp;
|
||
|
|
|
||
|
|
|
||
|
|
// RELATED FIELDS
|
||
|
|
var $created_by;
|
||
|
|
var $created_by_name;
|
||
|
|
var $modified_by_name;
|
||
|
|
var $assigned_user_name;
|
||
|
|
|
||
|
|
// SUBPANELS RELATED
|
||
|
|
|
||
|
|
// MODULE OBJECT DETAILS
|
||
|
|
var $module_dir = 'EcmDocumentTemplates';
|
||
|
|
var $table_name = "ecmdocumenttemplates";
|
||
|
|
var $object_name = "EcmDocumentTemplate";
|
||
|
|
|
||
|
|
//RELATED TABLE NAMES
|
||
|
|
|
||
|
|
|
||
|
|
// USED TO RETRIEVE RELATED FIELDS FROM FORM POSTS.
|
||
|
|
var $additional_column_fields = Array(
|
||
|
|
'assigned_user_name',
|
||
|
|
'assigned_user_id',
|
||
|
|
'modified_user_id',
|
||
|
|
'created_by',
|
||
|
|
);
|
||
|
|
|
||
|
|
var $relationship_fields = Array(
|
||
|
|
//RELATIONSHIP FIELDS
|
||
|
|
|
||
|
|
);
|
||
|
|
|
||
|
|
function EcmDocumentTemplate() {
|
||
|
|
parent::SugarBean();
|
||
|
|
$this->setupCustomFields('EcmDocumentTemplates');
|
||
|
|
foreach ($this->field_defs as $field)
|
||
|
|
{
|
||
|
|
$this->field_name_map[$field['name']] = $field;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
var $new_schema = true;
|
||
|
|
|
||
|
|
function get_summary_text(){
|
||
|
|
return "$this->name";
|
||
|
|
}
|
||
|
|
|
||
|
|
function create_list_query($order_by, $where, $show_deleted = 0){
|
||
|
|
// Fill in the assigned_user_name
|
||
|
|
$custom_join = $this->custom_fields->getJOIN();
|
||
|
|
$query = "SELECT ";
|
||
|
|
$query .= "
|
||
|
|
ecmdocumenttemplates.*
|
||
|
|
,users.user_name as assigned_user_name";
|
||
|
|
if($custom_join){
|
||
|
|
$query .= $custom_join['select'];
|
||
|
|
}
|
||
|
|
$query .= " FROM ecmdocumenttemplates
|
||
|
|
LEFT JOIN users
|
||
|
|
ON ecmdocumenttemplates.assigned_user_id=users.id";
|
||
|
|
|
||
|
|
|
||
|
|
$query .= " ";
|
||
|
|
if($custom_join){
|
||
|
|
$query .= $custom_join['join'];
|
||
|
|
}
|
||
|
|
$where_auto = '1=1';
|
||
|
|
if($show_deleted == 0){
|
||
|
|
$where_auto = " $this->table_name.deleted=0 ";
|
||
|
|
}else if($show_deleted == 1){
|
||
|
|
$where_auto = " $this->table_name.deleted=1 ";
|
||
|
|
}
|
||
|
|
|
||
|
|
if($where != "")
|
||
|
|
$query .= "where $where AND ".$where_auto;
|
||
|
|
else
|
||
|
|
$query .= "where ".$where_auto;
|
||
|
|
if(substr_count($order_by, '.') > 0){
|
||
|
|
$query .= " ORDER BY $order_by";
|
||
|
|
}
|
||
|
|
else if($order_by != "")
|
||
|
|
$query .= " ORDER BY $order_by";
|
||
|
|
else
|
||
|
|
$query .= " ORDER BY ecmdocumenttemplates.name";
|
||
|
|
|
||
|
|
return $query;
|
||
|
|
}
|
||
|
|
|
||
|
|
function create_export_query($order_by, $where){
|
||
|
|
$custom_join = $this->custom_fields->getJOIN();
|
||
|
|
$query = "SELECT
|
||
|
|
ecmdocumenttemplates.*,
|
||
|
|
users.user_name assigned_user_name";
|
||
|
|
if($custom_join){
|
||
|
|
$query .= $custom_join['select'];
|
||
|
|
}
|
||
|
|
$query .= " FROM ecmdocumenttemplates ";
|
||
|
|
|
||
|
|
$query .= " LEFT JOIN users
|
||
|
|
ON ecmdocumenttemplates.assigned_user_id=users.id";
|
||
|
|
if($custom_join){
|
||
|
|
$query .= $custom_join['join'];
|
||
|
|
}
|
||
|
|
$query .= "";
|
||
|
|
$where_auto = " ecmdocumenttemplates.deleted=0
|
||
|
|
";
|
||
|
|
|
||
|
|
if($where != "")
|
||
|
|
$query .= " where $where AND ".$where_auto;
|
||
|
|
else
|
||
|
|
$query .= " where ".$where_auto;
|
||
|
|
|
||
|
|
if($order_by != "")
|
||
|
|
$query .= " ORDER BY $order_by";
|
||
|
|
else
|
||
|
|
$query .= " ORDER BY ecmdocumenttemplates.name";
|
||
|
|
|
||
|
|
return $query;
|
||
|
|
}
|
||
|
|
|
||
|
|
function fill_in_additional_list_fields(){
|
||
|
|
}
|
||
|
|
|
||
|
|
function fill_in_additional_detail_fields(){
|
||
|
|
// FILL IN THE ASSIGNED_USER_NAME
|
||
|
|
$this->assigned_user_name = get_assigned_user_name($this->assigned_user_id);
|
||
|
|
$this->created_by_name = get_assigned_user_name($this->created_by);
|
||
|
|
$this->modified_by_name = get_assigned_user_name($this->modified_user_id);
|
||
|
|
}
|
||
|
|
|
||
|
|
function get_list_view_data(){
|
||
|
|
global $current_language;
|
||
|
|
$the_array = parent::get_list_view_data();
|
||
|
|
$app_list_strings = return_app_list_strings_language($current_language);
|
||
|
|
$mod_strings = return_module_language($current_language, 'EcmDocumentTemplates');
|
||
|
|
// THE NEW LISTVIEW CODE ONLY FETCHES COLUMNS THAT WE'RE DISPLAYING AND NOT ALL
|
||
|
|
// THE COLUMNS SO WE NEED THESE CHECKS.
|
||
|
|
$the_array['NAME'] = (($this->name == "") ? "<em>blank</em>" : $this->name);
|
||
|
|
$the_array['ENCODED_NAME'] = $this->name;
|
||
|
|
return $the_array;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
BUILDS A GENERIC SEARCH BASED ON THE QUERY STRING USING OR.
|
||
|
|
DO NOT INCLUDE ANY $THIS-> BECAUSE THIS IS CALLED ON WITHOUT HAVING THE CLASS INSTANTIATED.
|
||
|
|
*/
|
||
|
|
function build_generic_where_clause ($the_query_string) {
|
||
|
|
$where_clauses = Array();
|
||
|
|
$the_query_string = PearDatabase::quote(from_html($the_query_string));
|
||
|
|
array_push($where_clauses, "ecmdocumenttemplates.name like '$the_query_string%'");
|
||
|
|
|
||
|
|
$the_where = "";
|
||
|
|
foreach($where_clauses as $clause){
|
||
|
|
if($the_where != "") $the_where .= " or ";
|
||
|
|
$the_where .= $clause;
|
||
|
|
}
|
||
|
|
return $the_where;
|
||
|
|
}
|
||
|
|
|
||
|
|
function set_notification_body($xtpl, $simplemodule){
|
||
|
|
global $mod_strings, $app_list_strings;
|
||
|
|
|
||
|
|
$xtpl->assign("NAME", $simplemodule->name);
|
||
|
|
$xtpl->assign("ECMDOCUMENTTEMPLATES_DESCRIPTION", $ecmdocumenttemplates->description);
|
||
|
|
return $xtpl;
|
||
|
|
}
|
||
|
|
|
||
|
|
function bean_implements($interface){
|
||
|
|
switch($interface){
|
||
|
|
case 'ACL':return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
function save($check_notify = FALSE){
|
||
|
|
if($this->polish_correct_format == 'on') $this->polish_correct_format = 1; else $this->polish_correct_format = 0;
|
||
|
|
if($this->change_all_old_records == 1) {
|
||
|
|
$this->UpdateFormatNumber("EcmQuotes", "ecmquotes");
|
||
|
|
$this->UpdateFormatNumber("EcmSales", "ecmsales");
|
||
|
|
$this->UpdateFormatNumber("EcmInvoiceOuts", "ecminvoiceouts");
|
||
|
|
$this->UpdateFormatNumber("EcmWorkReports", "ecmworkreports");
|
||
|
|
$this->UpdateFormatNumber("EcmDeliveryNotes", "ecmdeliverynotes");
|
||
|
|
}
|
||
|
|
$arr=array();
|
||
|
|
foreach($this->docs as $d){
|
||
|
|
$arr[$d]=$_REQUEST[$d."_file"];
|
||
|
|
}
|
||
|
|
$tfd=base64_encode(serialize($arr));
|
||
|
|
$this->template_files_defs=$tfd;
|
||
|
|
return parent::save($check_notify);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function UpdateFormatNumber($module, $table_name, $field_number = 'number', $field_formatted_number = 'document_no', $field_template_id = 'template_id') {
|
||
|
|
$query = "SELECT `id`, `$field_number` as `number` FROM `$table_name` WHERE `$field_template_id`='$this->id' ORDER BY `date_entered` ASC";
|
||
|
|
$results = $GLOBALS['db']->query($query);
|
||
|
|
if(is_resource($results)) {
|
||
|
|
$numberPrefix = $this->getNumberPrefix($module);
|
||
|
|
while($row = $GLOBALS['db']->fetchByAssoc($results)) {
|
||
|
|
$new_number = $this->formatNumber($row['number'], $module, $table_name, $field_number, $numberPrefix);
|
||
|
|
$query = "UPDATE `$table_name` SET `$field_formatted_number`='$new_number' WHERE `id`='".$row['id']."'";
|
||
|
|
$this->db->query($query);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public function retrieveByAccountId($id) {
|
||
|
|
$query = "select id from ecmdocumenttemplates where account_id='".$id."' AND deleted=0 limit 1";
|
||
|
|
$result = mysql_query($query);
|
||
|
|
if(!$result) return '';
|
||
|
|
$idtmp = mysql_fetch_array($result);
|
||
|
|
$this->retrieve($idtmp[0]);
|
||
|
|
$this->unformat_all_fields();
|
||
|
|
}
|
||
|
|
|
||
|
|
function setPDF($id) {
|
||
|
|
$this->retrieve($id);
|
||
|
|
if($this->id == '') return;
|
||
|
|
$this->format_all_fields();
|
||
|
|
$this->setAccount();
|
||
|
|
$this->loadParser();
|
||
|
|
$this->header_text = $this->mfp->parseText($this->header_text);
|
||
|
|
$this->footer_text = $this->mfp->parseText($this->footer_text);
|
||
|
|
|
||
|
|
$address = $this->account->name;
|
||
|
|
if($this->account->billing_address_street) $address .= " - ".$this->account->billing_address_street;
|
||
|
|
if($this->account->billing_address_postalcode) $address .= " - ".$this->account->billing_address_postalcode;
|
||
|
|
if($this->account->billing_address_city) $address .= " ".$this->account->billing_address_city;
|
||
|
|
$this->address = $address;
|
||
|
|
|
||
|
|
require_once('modules/EcmDocumentTemplates/DocumentTemplatePDF.php');
|
||
|
|
$this->pdf = new DocumentTemplatePDF();
|
||
|
|
$this->pdf->edt = $this;
|
||
|
|
$this->pdf->SetXY(25,25);
|
||
|
|
$this->pdf->SetLineWidth(0);
|
||
|
|
$this->pdf->SetDrawColor(0,0,0);
|
||
|
|
$this->pdf->SetFont('Arial', '', 8);
|
||
|
|
$this->pdf->AddPage();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function outputPDF($name='auto_pdf.pdf',$method = 'I') {
|
||
|
|
if($method == "S")
|
||
|
|
echo $this->pdf->Output($name,$method);
|
||
|
|
else
|
||
|
|
$this->pdf->Output($name,$method);
|
||
|
|
}
|
||
|
|
|
||
|
|
function getPDF($id,$name='auto_pdf.pdf',$method = 'I') {
|
||
|
|
$this->setPDF($id);
|
||
|
|
$this->outputPDF($name,$method);
|
||
|
|
}
|
||
|
|
|
||
|
|
function setAccount() {
|
||
|
|
if(isset($this->account_id) && $this->account_id != '') {
|
||
|
|
require_once('modules/Accounts/Account.php');
|
||
|
|
$this->account = new Account();
|
||
|
|
$this->account->retrieve($this->account_id);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function loadParser() {
|
||
|
|
if(isset($this->mfp) && $this->mfp != '') return true;
|
||
|
|
$path = 'modules/EcmDocumentTemplates/ModuleFieldsParser/ModuleFieldsParser.php';
|
||
|
|
if(file_exists($path)) {
|
||
|
|
require_once($path);
|
||
|
|
$this->mfp = new ModuleFieldsParser();
|
||
|
|
$this->mfp->modules['EcmDocumentTemplates']['focus'] = $this;
|
||
|
|
if(!isset($this->account->id) || $this->account->id == '') {
|
||
|
|
if(isset($this->account_id) && $this->account_id != '') {
|
||
|
|
$this->setAccount();
|
||
|
|
$this->mfp->modules['Accounts']['focus'] = $this->account;
|
||
|
|
}
|
||
|
|
} else
|
||
|
|
$this->mfp->modules['Accounts']['focus'] = $this->account;
|
||
|
|
|
||
|
|
require_once('modules/Users/User.php');
|
||
|
|
$us = new User();
|
||
|
|
global $current_user;
|
||
|
|
$us->retrieve(($this->assigned_user_id)?$this->assigned_user_id:$current_user->id);
|
||
|
|
if(isset($us->id) && $us->id != '') {
|
||
|
|
$this->mfp->modules['Users']['focus'] = $us;
|
||
|
|
}
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function generateNumber($table_name, $field_name = 'number') {
|
||
|
|
|
||
|
|
$number = date("Y");
|
||
|
|
|
||
|
|
if($table_name=="ecminvoiceouts")
|
||
|
|
$query = "SELECT COUNT(*) as `count` FROM `$table_name` WHERE `ecminvoiceout_id` is null and `".$field_name."` LIKE '".$number."%' AND deleted='0' ORDER BY `".$field_name."` DESC LIMIT 1";
|
||
|
|
|
||
|
|
else $query = "SELECT COUNT(*) as `count` FROM `$table_name` WHERE correct_id is null and `".$field_name."` LIKE '".$number."%' ORDER BY `".$field_name."` DESC LIMIT 1";
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
$GLOBALS['db'] = new MysqlManager();
|
||
|
|
$GLOBALS['db']->connect();
|
||
|
|
$result = $GLOBALS['db']->query($query);
|
||
|
|
if(is_resource($result)) {
|
||
|
|
$count = $GLOBALS['db']->fetchByAssoc($result);
|
||
|
|
$count = intval($count['count']);
|
||
|
|
//różnice między systemami - skasować po nowym roku:
|
||
|
|
|
||
|
|
} else $count = 1;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
$number = date("Ymd");
|
||
|
|
$number .= sprintf("%d", ++$count);
|
||
|
|
|
||
|
|
|
||
|
|
return $number;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function getNumberPrefix($module) {
|
||
|
|
$mod_strings2 = array();
|
||
|
|
require_once('modules/EcmTexts/EcmText.php');
|
||
|
|
if(isset($this->ecmlanguage) && $this->ecmlanguage != '') {
|
||
|
|
$data = EcmText::LoadText(null,null,$module,$this->ecmlanguage);
|
||
|
|
if(isset($data[0]) && isset($data[0]['data']) && isset($data[0]['data']['labels'])) {
|
||
|
|
$data = $data[0]['data']['labels'];
|
||
|
|
foreach($data as $key => $value) {
|
||
|
|
$mod_strings2[$value['label']] = $value['translation'];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $mod_strings2['LBL_PDF_CODE'];
|
||
|
|
}
|
||
|
|
|
||
|
|
function formatNumber($number, $module, $table_name = '', $field_name = 'number', $numberPrefix = null) {
|
||
|
|
|
||
|
|
if($table_name == '') $table_name = strtolower($module);
|
||
|
|
|
||
|
|
if($this->documents_per != "year") {
|
||
|
|
|
||
|
|
$from_number = strval(substr($number,0,4));
|
||
|
|
|
||
|
|
$GLOBALS['db'] = new MysqlManager();
|
||
|
|
$GLOBALS['db']->connect();
|
||
|
|
$query = "SELECT COUNT(*) as `count`";
|
||
|
|
$query .= " FROM `".$table_name."`";
|
||
|
|
$query .= " WHERE ";
|
||
|
|
if($table_name=="ecminvoiceouts")$query .= " ecminvoiceout_id is null and ";
|
||
|
|
else $query .= " correct_id is null and ";
|
||
|
|
$query .= " SUBSTRING(`number`, 1, 4) = '".$from_number."'";
|
||
|
|
|
||
|
|
if($this->documents_per == "month") {
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " SUBSTRING(`number`,1,6) = '".substr($number,0,6)."'";
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " CAST(`number` AS UNSIGNED) < ".$number;
|
||
|
|
}
|
||
|
|
else if($this->documents_per == "day") {
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " SUBSTRING(`number`,1,8) = '".substr($number,0,8)."'";
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " CAST(`number` AS UNSIGNED) < ".$number;
|
||
|
|
}
|
||
|
|
$query .= ";";
|
||
|
|
|
||
|
|
$result = $GLOBALS['db']->query($query);
|
||
|
|
|
||
|
|
if(is_resource($result)) {
|
||
|
|
$tmp = $GLOBALS['db']->fetchByAssoc($result);
|
||
|
|
$count = intval($tmp['count']);
|
||
|
|
$count ++;
|
||
|
|
}
|
||
|
|
|
||
|
|
$number = substr($number,0,8).strval($count);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if($numberPrefix == null)
|
||
|
|
$numberPrefix = $this->getNumberPrefix($module);
|
||
|
|
if($this->id=="57d2b950-00c8-62b7-16bb-4d678a086f05" || $this->id=="d48b9458-bf48-d30f-7f7c-4bb074833504"){
|
||
|
|
$a1=array("001/E","002/E","003/E","004/E","005/E","006/E","007/E","008/E","009/E","010/E","011/E","012/E","013/E","014/E","015/E","016/E","017/E","018/E","019/E");
|
||
|
|
$a2=array("1/E","2/E","3/E","4/E","5/E","6/E","7/E","8/E","9/E","10/E","11/E","12/E","13/E","14/E","15/E","16/E","17/E","18/E","19/E");
|
||
|
|
$nnoo=str_replace($a1,$a2,$this->formatDocumentNumber($number, $numberPrefix));
|
||
|
|
$t = explode("/", $nnoo);
|
||
|
|
if (substr($t[0],0,1) == "0") {
|
||
|
|
//return $t[0];
|
||
|
|
$t[0] = substr($t[0], 1, strlen($t[0]));
|
||
|
|
$nnoo = implode("/",$t);
|
||
|
|
}
|
||
|
|
if ($this->id=="57d2b950-00c8-62b7-16bb-4d678a086f05") return str_replace("E", "U", $nnoo);
|
||
|
|
return $nnoo;
|
||
|
|
}
|
||
|
|
else $nnoo=$this->formatDocumentNumber($number, $numberPrefix);
|
||
|
|
return $nnoo;
|
||
|
|
}
|
||
|
|
|
||
|
|
function generateNumberCorrect($table_name, $field_name = 'number') {
|
||
|
|
|
||
|
|
$number = date("Y");
|
||
|
|
|
||
|
|
if($table_name=="ecminvoiceouts"){
|
||
|
|
$query="SELECT COUNT(*) as count FROM ecminvoiceouts WHERE deleted='0' and (ecminvoiceout_id is not null or ecminvoiceout_id!='') and type='correct' and number LIKE '".$number."%' ORDER BY number DESC limit 1";
|
||
|
|
}
|
||
|
|
else $query = "SELECT COUNT(*) as `count` FROM `$table_name` WHERE `correct_id` is not null and `".$field_name."` LIKE '".$number."%' ORDER BY `".$field_name."` DESC LIMIT 1";
|
||
|
|
|
||
|
|
$GLOBALS['db'] = new MysqlManager();
|
||
|
|
$GLOBALS['db']->connect();
|
||
|
|
$result = $GLOBALS['db']->query($query);
|
||
|
|
if(is_resource($result)) {
|
||
|
|
$count = $GLOBALS['db']->fetchByAssoc($result);
|
||
|
|
$count = intval($count['count']);
|
||
|
|
|
||
|
|
//różnice między systemami - skasować po nowym roku:
|
||
|
|
if ($table_name=='ecminvoiceouts')
|
||
|
|
$count = $count - 6;
|
||
|
|
} else $count = 1;
|
||
|
|
|
||
|
|
$number = date("Ymd");
|
||
|
|
$number .=$count;
|
||
|
|
|
||
|
|
return $number;
|
||
|
|
}
|
||
|
|
function getNumberPrefixCorrect($module) {
|
||
|
|
$mod_strings2 = array();
|
||
|
|
require_once('modules/EcmTexts/EcmText.php');
|
||
|
|
if(isset($this->ecmlanguage) && $this->ecmlanguage != '') {
|
||
|
|
$data = EcmText::LoadText(null,null,$module,$this->ecmlanguage);
|
||
|
|
if(isset($data[0]) && isset($data[0]['data']) && isset($data[0]['data']['labels'])) {
|
||
|
|
$data = $data[0]['data']['labels'];
|
||
|
|
foreach($data as $key => $value) {
|
||
|
|
$mod_strings2[$value['label']] = $value['translation'];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $mod_strings2['LBL_PDF_CODE_CORRECT'];
|
||
|
|
}
|
||
|
|
|
||
|
|
function formatNumberCorrect($number, $module, $table_name = '', $field_name = 'number', $numberPrefix = null) {
|
||
|
|
|
||
|
|
if($table_name == '') $table_name = strtolower($module);
|
||
|
|
|
||
|
|
if($this->documents_per != "year") {
|
||
|
|
|
||
|
|
$from_number = strval(substr($number,0,4));
|
||
|
|
|
||
|
|
$GLOBALS['db'] = new MysqlManager();
|
||
|
|
$GLOBALS['db']->connect();
|
||
|
|
$query = "SELECT COUNT(*) as `count`";
|
||
|
|
$query .= " FROM `".$table_name."`";
|
||
|
|
$query .= " WHERE ";
|
||
|
|
if($table_name=="ecminvoiceouts")$query .= " ecminvoiceout_id is not null and ";
|
||
|
|
else $query .= " correct_id is not null and ";
|
||
|
|
$query .= " SUBSTRING(`number`, 1, 4) = '".$from_number."'";
|
||
|
|
if($this->documents_per == "month") {
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " SUBSTRING(`number`,1,6) = '".substr($number,0,6)."'";
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " CAST(`number` AS UNSIGNED) < ".$number;
|
||
|
|
}
|
||
|
|
else if($this->documents_per == "day") {
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " SUBSTRING(`number`,1,8) = '".substr($number,0,8)."'";
|
||
|
|
$query .= " AND";
|
||
|
|
$query .= " CAST(`number` AS UNSIGNED) < ".$number;
|
||
|
|
}
|
||
|
|
$query .= ";";
|
||
|
|
|
||
|
|
$result = $GLOBALS['db']->query($query);
|
||
|
|
if(is_resource($result)) {
|
||
|
|
$tmp = $GLOBALS['db']->fetchByAssoc($result);
|
||
|
|
$count = intval($tmp['count']);
|
||
|
|
$count ++;
|
||
|
|
}
|
||
|
|
|
||
|
|
$number = substr($number,0,8).strval($count);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if($numberPrefix == null)
|
||
|
|
$numberPrefix = $this->getNumberPrefixCorrect($module);
|
||
|
|
return $this->formatDocumentNumber($number, $numberPrefix);
|
||
|
|
}
|
||
|
|
|
||
|
|
function formatDocumentNumber($documentNumber = '', $code = '') {
|
||
|
|
$cf = '';
|
||
|
|
$format = $this->document_number_format_id;
|
||
|
|
$format = str_replace('CODE', '[cOdE]', $format);
|
||
|
|
$ARR1 = array ('y', 'Y', 'M', 'D', 'NR', '[cOdE]');
|
||
|
|
$ARR2 = array (substr($documentNumber,2,2), substr($documentNumber,0,4), substr($documentNumber,4,2), substr($documentNumber,6,2), substr($documentNumber,8));
|
||
|
|
$ARR2[4] = sprintf("%0".$this->documents_per_day_id."d",$ARR2[4]);
|
||
|
|
$ARR2[5] = $code;
|
||
|
|
$nno=str_replace($ARR1,$ARR2,$format).$cf;
|
||
|
|
$exp=explode(" ",$nno);
|
||
|
|
if($exp[0]=="")$nno=$exp[1];
|
||
|
|
return $nno;;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function getListOfTemplateFiles($path,$module){
|
||
|
|
if(!file_exists($path.$module))$module="Other";
|
||
|
|
if($handle=opendir($path.$module)) {
|
||
|
|
while (false !== ($file = readdir($handle))) {
|
||
|
|
if($file!="." && $file!=".." && is_dir($path.$module."/".$file))$arr[]=$file;
|
||
|
|
}
|
||
|
|
closedir($handle);
|
||
|
|
}
|
||
|
|
return $arr;
|
||
|
|
}
|
||
|
|
function selectTemplateFile($module,$files,$value){
|
||
|
|
$html='<select name="'.$module.'_file" id="'.$module.'_file">';
|
||
|
|
foreach($files as $f){
|
||
|
|
$html.='<option value="'.$f.'"';
|
||
|
|
if($value==$f)$html.=' selected';
|
||
|
|
$html.='>'.$f.'</option>';
|
||
|
|
}
|
||
|
|
$html.='</select>';
|
||
|
|
return $html;
|
||
|
|
}
|
||
|
|
function getTemplateFile($module, $type = null){
|
||
|
|
$arr=unserialize(base64_decode($this->template_files_defs));
|
||
|
|
if(
|
||
|
|
file_exists("modules/EcmDocumentTemplates/templates/".$module."/".$arr[$module]."/header.php") &&
|
||
|
|
file_exists("modules/EcmDocumentTemplates/templates/".$module."/".$arr[$module]."/footer.php") &&
|
||
|
|
file_exists("modules/EcmDocumentTemplates/templates/".$module."/".$arr[$module]."/subheader.php") &&
|
||
|
|
file_exists("modules/EcmDocumentTemplates/templates/".$module."/".$arr[$module]."/subfooter.php")
|
||
|
|
)return array($module,$arr[$module]);
|
||
|
|
else return array("Other",$arr[$module]);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
?>
|