Removed many global variables from config.default.php to GL Setup, Company Setup...
[fa-stable.git] / reporting / includes / reporting.inc
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 // Link to printing single document with bulk report template file.
13 // Ex. label_cell(print_document_link($myrow['order_no'], _("Print")), $type);
14 // or display_note(print_document_link($order_no, _("Print this order")));
15 // You only need full parameter list for invoices/credit notes
16
17 function print_document_link($doc_no, $link_text, $link=true, $type_no, 
18         $icon=false, $class='printlink', $id='', $email=0, $extra=0)
19 {
20         global $path_to_root;
21         include_once($path_to_root . "/includes/types.inc");
22
23         $url = $path_to_root.'/reporting/prn_redirect.php?';
24         $def_orientation = (user_def_print_orientation() == 1 ? 1 : 0);
25
26         switch ($type_no)
27         {
28                 case ST_SALESQUOTE :
29                         $rep = 111;
30                         // from, to, currency, email, comments, orientation
31                         $ar = array(
32                                 'PARAM_0' => $doc_no, 
33                                 'PARAM_1' => $doc_no, 
34                                 'PARAM_2' => '', 
35                                 'PARAM_3' => $email, 
36                                 'PARAM_4' => '',
37                                 'PARAM_5' => $def_orientation);
38                         break;
39                 case ST_SALESORDER :
40                         $rep = 109;
41                         // from, to, currency, email, quote, comments, orientation
42                         $ar = array(
43                                 'PARAM_0' => $doc_no, 
44                                 'PARAM_1' => $doc_no, 
45                                 'PARAM_2' => '', 
46                                 'PARAM_3' => $email, 
47                                 'PARAM_4' => 0, 
48                                 'PARAM_5' => '',
49                                 'PARAM_6' => $def_orientation);
50                         break;
51                 case ST_CUSTDELIVERY :
52                         $rep = 110;
53                         // from, to, email, packing slip, comments, orientation
54                         $ar = array(
55                                 'PARAM_0' => $doc_no, 
56                                 'PARAM_1' => $doc_no, 
57                                 'PARAM_2' => $email,
58                                 'PARAM_3' => $extra,
59                                 'PARAM_4' => '',
60                                 'PARAM_5' => $def_orientation);
61                         break;
62                 case ST_SALESINVOICE : // Sales Invoice
63                 case ST_CUSTCREDIT : // Customer Credit Note
64                         $rep = $type_no==ST_CUSTCREDIT ? 113 : 107;
65                         // from, to, currency, email, paylink, comments, orientation
66                         $ar = array(
67                                 'PARAM_0' => $doc_no, 
68                                 'PARAM_1' => $doc_no, 
69                                 'PARAM_2' => '', 
70                                 'PARAM_3' => $email, 
71                                 'PARAM_4' => '',
72                                 'PARAM_5' => '', 
73                                 'PARAM_6' => $def_orientation);
74                         break;
75                 case ST_PURCHORDER :
76                         $rep = 209;
77                         // from, to, currency, email, comments, orientation
78                         $ar = array(
79                                 'PARAM_0' => $doc_no, 
80                                 'PARAM_1' => $doc_no, 
81                                 'PARAM_2' => '', 
82                                 'PARAM_3' => $email, 
83                                 'PARAM_4' => '',
84                                 'PARAM_5' => $def_orientation);
85                         break;
86                 case ST_CUSTPAYMENT :
87                         $rep = 112;
88                         // from, to, currency, comments, orientation
89                         $ar = array(
90                                 'PARAM_0' => $doc_no, 
91                                 'PARAM_1' => $doc_no, 
92                                 'PARAM_2' => '', 
93                                 'PARAM_3' => '',
94                                 'PARAM_4' => $def_orientation);
95                         break;
96                 case ST_SUPPAYMENT :
97                         $rep = 210;
98                         // from, to, currency, email, comments, orientation
99                         $ar = array(
100                                 'PARAM_0' => $doc_no, 
101                                 'PARAM_1' => $doc_no, 
102                                 'PARAM_2' => '', 
103                                 'PARAM_3' => $email, 
104                                 'PARAM_4' => '',
105                                 'PARAM_5' => $def_orientation);
106                         break;
107                 case ST_WORKORDER :
108                         $rep = 409;
109                         // from, to, email, comments, orientation
110                         $ar = array(
111                                 'PARAM_0' => $doc_no, 
112                                 'PARAM_1' => $doc_no, 
113                                 'PARAM_2' => $email, 
114                                 'PARAM_3' => '', 
115                                 'PARAM_4' => $def_orientation);
116                         break;
117 //              default: $ar = array();
118         }
119         
120         return print_link($link_text, $rep, $ar, "", $icon, $class, $id);
121 }
122 //
123 //      Universal link to any kind of report.
124 //
125 function print_link($link_text, $rep, $pars = array(), $dir = '', 
126         $icon=false, $class='printlink', $id='')
127 {
128         global $path_to_root, $pdf_debug;
129
130         $url = $dir == '' ?  $path_to_root.'/reporting/prn_redirect.php?' : $dir;
131
132         $id = default_focus($id);
133         foreach($pars as $par => $val) {
134                 $pars[$par] = "$par=".urlencode($val);
135         }
136         $pars[] = 'REP_ID='.urlencode($rep);
137         $url .= implode ('&', $pars);
138
139         if ($class != '')
140                 $class = $pdf_debug ? '' : " class='$class'";
141         if ($id != '')
142                 $id = " id='$id'";
143         $pars = access_string($link_text);
144         if (user_graphic_links() && $icon)
145                 $pars[0] = set_icon($icon, $pars[0]);
146         return "<a target='_blank' href='$url'$id$class $pars[1]>$pars[0]</a>";
147 }
148
149 /*
150 // Purpose: Function to parse a string into parameters
151 // Release Date: 2014-12-26
152 // Author: ApMuthu <apmuthu@usa.net>
153 // Usage:
154 $str = "PPFrt#2000 CID#6378465 TaxEx#2345-038 abcde ertrgdert COD#4253 jdegtd PIN#6473654";
155 $p = parse_notes_params($str);
156 echo print_r($p, true);
157
158 An example of usage will be in the reporting/rep110.php file at near the end just before the last $rep-Font(); statement: 
159
160
161     $notes_params = parse_notes_params($branch['notes']);
162     if ($packing_slip == 0 && array_key_exists('CID', $notes_params)) {
163         $rep->NewLine(1);
164         $rep->TextCol(1, 7, "Old Customer# : " . $notes_params['CID'], - 2);
165     }
166 */
167
168 function parse_notes_params($str, $sep=" ", $delim="#") {
169     $str_params = explode($sep, $str);
170     $param_array=Array('notes' => '');
171     foreach ($str_params AS $str_param) {
172         $param_set=explode($delim, trim($str_param));
173         $key = (array_key_exists(0, $param_set) ? trim($param_set[0]) : '');
174         $val = (array_key_exists(1, $param_set) ? trim($param_set[1]) : '');
175         if (strlen($key) > 0 && strlen($val) > 0) {
176             $param_array[$key]=$val;
177         } else {
178             // stop at first missing parameter set
179             // break;
180             // Collect the rest into notes
181             $param_array['notes'] .= (" " .  $str_param);
182         }
183     }
184     $param_array['notes'] = trim($param_array['notes']);
185     return $param_array;
186 }
187
188 ?>