noalyss Version-9
NOALYSS : serveur de comptabilité et ERP (2002)
Loading...
Searching...
No Matches
Stock Class Reference

manage the stocks More...

+ Inheritance diagram for Stock:
+ Collaboration diagram for Stock:

Public Member Functions

 build_tmp_table ($p_array)
 
 create_query_histo ($p_array)
 
 export_stock_histo_form ()
 
 export_stock_summary_list_form ()
 
 history ($p_array)
 show history of all the stock movement
 
 search_box ($p_array)
 
 search_box_button ()
 
 summary ($p_array)
 
- Public Member Functions inherited from Stock_Sql
 __construct ($cn, $p_id=-1)
 
- Public Member Functions inherited from Table_Data_SQL
 build_query ()
 Build the SQL select statement for querying the object and returns it.
 
 column_update ($column_expr, $value)
 update the value of a column with an expression for $value for the current record
 
 count ($p_where="", $p_array=null)
 return the number of count in the table corresponding to the where condition
 
 delete ()
 
 exist ()
 Count the number of record with the id ,.
 
 get_all_to_array ($p_key_col, $p_cond="", $p_array=NULL)
 Get all the row and use the p_key_code are the key value of array.
 
 insert ()
 
 load ()
 Load the current row return false if not found.
 
 seek ($cond='', $p_array=null)
 retrieve array of object thanks a condition
 
 update ()
 
- Public Member Functions inherited from Data_SQL
 __construct (DatabaseCore $p_cn, $p_id=-1)
 
 __toString ()
 
 collect_objects ($cond='', $p_array=null)
 return an array of objects.
 
 from_array ($p_array)
 Transform an array into object.
 
 get ($p_string)
 get the value thanks the colum name and not the alias (name).
 
 get_cn ()
 
 get_info ()
 
 get_name ()
 
 get_object ($p_ret, $idx)
 
 get_pk_value ()
 
 get_primary_key ()
 
 get_type ()
 
 getp ($p_string)
 set the value thanks the alias name instead of the colum name
 
 next ($ret, $i)
 get_seek return the next object, the return of the query must have all the column of the object
 
 save ()
 Insert or update : if the row already exists, update otherwise insert.
 
 set ($p_string, $p_value)
 set the value thanks the colum name and not the alias (name)
 
 set_cn ($cn)
 
 set_name ($name)
 
 set_pk_value ($p_value)
 
 set_primary_key ($primary_key)
 
 set_type ($type)
 
 setp ($p_string, $p_value)
 set the value thanks the alias name instead of the colum name
 
 to_array ($prefix="")
 Turn an object (row) into an array, and the key could be prefixed with $prefix.
 
 to_row ($p_array)
 turns a row fetched from the DB into a SQL object in updating all his attribute
 
 verify ()
 

Additional Inherited Members

- Data Fields inherited from Data_SQL
 $cn
 
 $date_format
 Type of the data.
 
 $default
 defaullt date format
 
 $name
 Database connection.
 
 $primary_key
 Array of logical and real name.
 
 $table
 
 $type
 Column name of the primary key.
 

Detailed Description

manage the stocks

Definition at line 36 of file stock.class.php.

Member Function Documentation

◆ build_tmp_table()

Stock::build_tmp_table ( $p_array)

Definition at line 283 of file stock.class.php.

284 {
285 global $cn,$g_user;
286 // exercice
287 if (isset ($p_array['state_exercice']))
288 {
289 $periode=new Periode($cn);
290 $date= format_date($p_array['state_exercice'], 'YYYY-MM-DD');
291 $periode->find_periode($date);
292
293 } else {
294 $periode_id=$g_user->get_periode();
295 $periode=new Periode($cn,$periode_id);
296 }
297 $periode->load();
298 $tmp_id = $cn->get_next_seq("public.tmp_stockgood_s_id_seq");
299 $cn->exec_sql("delete from tmp_stockgood where s_date < now() - interval '2 days' ");
300 $cn->exec_sql("insert into tmp_stockgood(s_id) values ($1)", array($tmp_id));
301
302 // get all readable repository
303 $a_repository = $g_user->get_available_repository('R');
304
305 // From ACH : IN
306 $sql_repo_detail = "
307 insert into tmp_stockgood_detail(s_id,sg_code,s_qin,r_id,f_id)
308 select $tmp_id,trim(sg_code), coalesce(sum(sg_quantity),0) as qin,r_id,f_id
309 from stock_goods
310 where
311 sg_type='d'
312 and j_id is not null
313 and j_id in (select j_id from jrnx where j_tech_per in (select p_id from parm_periode where p_exercice=$2))
314 and r_id in (select r_id from profile_sec_repository where p_id=$1)
315 group by r_id,trim(sg_code),f_id
316 ";
317
318 // From VEN : out
319 $cn->exec_sql($sql_repo_detail, array($g_user->get_profile(), $periode->p_exercice));
320 $sql_repo_detail = "
321 insert into tmp_stockgood_detail(s_id,sg_code,s_qout,r_id,f_id)
322 select $tmp_id,trim(sg_code) , coalesce(sum(sg_quantity),0) as qout,r_id,f_id
323 from stock_goods as sg
324 where
325 sg_type='c'
326 and sg.j_id is not null
327 and sg.j_id in (select j_id from jrnx where j_tech_per in (select p_id from parm_periode where p_exercice=$2))
328 and sg.r_id in (select r_id from profile_sec_repository where p_id=$1)
329 group by r_id,trim(sg_code),f_id
330 ";
331 $cn->exec_sql($sql_repo_detail, array($g_user->get_profile(), $periode->p_exercice));
332
333 // From INV IN
334 $sql_repo_detail = "
335 insert into tmp_stockgood_detail(s_id,sg_code,s_qin,r_id,f_id)
336 select $tmp_id,trim(sg_code) , coalesce(sum(sg_quantity),0) as qin,r_id,f_id
337 from stock_goods as sg
338 where
339 sg_type='d'
340 and j_id is null
341 and sg_date >= ( select min(p_start) from parm_periode where p_exercice=$2)
342 and sg_date <= ( select max(p_end) from parm_periode where p_exercice=$2)
343 and sg.r_id in (select r_id from profile_sec_repository where p_id=$1)
344 group by r_id,trim(sg_code),f_id
345 ";
346 // From INV: OUT
347 $cn->exec_sql($sql_repo_detail, array($g_user->get_profile(), $periode->p_exercice));
348 $sql_repo_detail = "
349 insert into tmp_stockgood_detail(s_id,sg_code,s_qout,r_id,f_id)
350 select $tmp_id,trim(sg_code), coalesce(sum(sg_quantity),0) as qout,r_id,f_id
351 from stock_goods
352 where
353 sg_type='c'
354 and j_id is null
355 and r_id in (select r_id from profile_sec_repository where p_id=$1)
356 and sg_date >= ( select min(p_start) from parm_periode where p_exercice=$2)
357 and sg_date <= ( select max(p_end) from parm_periode where p_exercice=$2)
358 group by r_id,trim(sg_code),f_id
359 ";
360 $cn->exec_sql($sql_repo_detail, array($g_user->get_profile(), $periode->p_exercice));
361 return $tmp_id;
362 }
format_date($p_date, $p_from_format='YYYY-MM-DD', $p_to_format='DD.MM.YYYY')
format the date, when taken from the database the format is MM-DD-YYYY
global $g_user
if no group available , then stop
$periode_id

References Data_SQL\$cn, $date, $g_user, $p_array, $periode, $periode_id, $tmp_id, and format_date().

Referenced by summary().

+ Here is the call graph for this function:

◆ create_query_histo()

Stock::create_query_histo ( $p_array)

Definition at line 160 of file stock.class.php.

161 {
162 global $cn,$g_user;
163 $profile=$g_user->get_profile();
164 $sql = "
165 with tiers_id as (
166 select qp_supplier as f_tiers, j_id
167 from quant_purchase
168 union all
169 select qs_client , j_id
170 from quant_sold)
171 select sg_id,
172 sg.f_id,
173 (select ad_value from fiche_Detail as fd1 where ad_id=1 and fd1.f_id=jx.f_id) as fname,
174 (select ad_value from fiche_Detail as fd1 where ad_id=23 and fd1.f_id=jx.f_id) as qcode,
175 (select ad_value from fiche_Detail as fd3 where fd3.ad_id=1 and fd3.f_id=tier1.f_tiers) as fname_tiers,
176 (select ad_value from fiche_Detail as fd4 where fd4.ad_id=23 and fd4.f_id=tier1.f_tiers) as qcode_tiers,
177 sg_code,
178 coalesce(sg_comment,jr_comment) as ccomment,
179 sg_exercice,
180 r_name,
181 sg.r_id,
182 j_montant,
183 jr_date,
184 sg_quantity,
185 case when sg_type='c' then 'OUT' when sg_type='d' then 'IN' end as direction,
186 jr_internal,
187 jr_id,
188 coalesce(sg_date,jr_date) as real_date,
189 to_char(coalesce(sg_date,jr_date),'DD.MM.YY') as cdate,
190 tier1.f_tiers,
191 j.jr_pj_number
192 from stock_goods as sg
193 join stock_repository as sr on (sg.r_id=sr.r_id)
194 left join jrnx as jx on (sg.j_id=jx.j_id)
195 left join jrn as j on (j.jr_grpt_id=jx.j_grpt)
196 left join tiers_id as tier1 on (tier1.j_id=sg.j_id)
197 where
198 sg.r_id in (select r_id from profile_sec_repository where p_id = $profile)";
199 $and = " and ";
200 $clause = "";
201 if (isset($p_array['wdate_start']) && $p_array['wdate_start'] != '')
202 {
203 $clause = $and." to_date('" . sql_string($p_array['wdate_start']) . "','DD.MM.YYYY')<=coalesce(sg_date,jr_date) ";
204 }else{
205 $exercice=$g_user->get_exercice();
206 $periode=new Periode($cn);
207 $limit=$periode->get_limit($exercice);
208 $clause = $and.sprintf(" to_date ('%s','DD.MM.YYYY') <=coalesce(sg_date,jr_date)",$limit[0]->first_day());
209 }
210 if (isset($p_array['wdate_end']) && $p_array['wdate_end'] != '')
211 {
212 $clause.=$and . " to_date('" . sql_string($p_array['wdate_end']) . "','DD.MM.YYYY')>=coalesce(sg_date,jr_date) ";
213 }else {
214 $exercice=$g_user->get_exercice();
215 $periode=new Periode($cn);
216 $limit=$periode->get_limit($exercice);
217 $clause .= $and.sprintf(" to_date ('%s','DD.MM.YYYY') >= coalesce(sg_date,jr_date)",$limit[1]->last_day());
218 }
219 if (isset($p_array['wamount_start']) && $p_array['wamount_start'] != '' && isNumber($p_array['wamount_start']) == 1
220 && $p_array['wamount_start'] != 0 )
221 {
222 $clause.=$and . " j_montant >= " . sql_string($p_array['wamount_start']);
223 }
224 if (isset($p_array['wamount_end'])
225 && $p_array['wamount_end'] != ''
226 && $p_array['wamount_end'] != 0
227 && isNumber($p_array['wamount_end']) == 1)
228 {
229 $clause.=$and . " j_montant <= " . sql_string($p_array['wamount_end']);
230 }
231 if (isset($p_array['wcard']) && $p_array['wcard'] != '')
232 {
233 $f = new Fiche($this->cn);
234 $f->get_by_qcode($p_array['wcard'], false);
235 if ($f->id != 0)
236 {
237 $clause.=$and . " sg.f_id = " . sql_string($f->id);
238 }
239 }
240 if (isset($p_array['wcode_stock']) && $p_array['wcode_stock'] != "")
241 {
242 $clause.=$and . " upper(sg_code) = upper('" . sql_string(trim($p_array['wcode_stock'])) . "')";
243 }
244 if (isset($p_array['wrepo']) && $p_array['wrepo'] != -1)
245 {
246 $clause.=$and . " sg.r_id = " . sql_string($p_array['wrepo']);
247 }
248 if (isset($p_array['wdirection']) && $p_array['wdirection'] != -1)
249 {
250 $clause.=$and . " sg.sg_type = '" . sql_string($p_array['wdirection']) . "'";
251 }
252
253 return $sql . $clause;
254 }
isNumber($p_int)
sql_string($p_string)
Fix the problem with the quote char for the database.
catch(Exception $e) $exercice
$input_from cn

References Data_SQL\$cn, $exercice, $f, $g_user, $limit, $p_array, $periode, $profile, $sql, cn, isNumber(), and sql_string().

Referenced by history().

+ Here is the call graph for this function:

◆ export_stock_histo_form()

Stock::export_stock_histo_form ( )

Definition at line 83 of file stock.class.php.

84 {
85 echo '<form style="display:inline" method="GET" action="export.php">';
86 echo HtmlInput::get_to_hidden(array("gDossier", "wcard", "wdate_start", "wdate_end", "wrepo",
87 "wamount_start", "wamount_end", "wcode_stock", "wdirection"));
88 echo HtmlInput::hidden('act','CSV:StockHisto');
89 echo HtmlInput::submit('stockhisto','Export CSV');
90 echo '</form>';
91 }
static hidden($p_name, $p_value, $p_id="")
static get_to_hidden($array)
transform $_GET data to hidden
static submit($p_name, $p_value, $p_javascript="", $p_class="smallbutton")

Referenced by history().

◆ export_stock_summary_list_form()

Stock::export_stock_summary_list_form ( )

Definition at line 92 of file stock.class.php.

93 {
94 echo '<form style="display:inline" method="GET" action="export.php">';
95 echo HtmlInput::get_to_hidden(array("gDossier", "state_exercice"));
96 echo HtmlInput::hidden('act','CSV:StockResmList');
97
98 echo HtmlInput::submit('stockresm','Export CSV');
99 echo '</form>';
100 }

Referenced by summary().

◆ history()

Stock::history ( $p_array)

show history of all the stock movement

Parameters
$p_arrayusually contains $_GET

Definition at line 43 of file stock.class.php.

44 {
45
47 $p_url = HtmlInput::get_to_string(array("gDossier", "ac", "wcard", "wdate_start", "wdate_end", "wrepo",
48 "wamount_start", "wamount_end", "wcode_stock", "wdirection"));
49
50 $tb = new Sort_Table();
51 $tb->add("Date", $p_url, " order by real_date asc", "order by real_date desc", "da", "dd");
52 $tb->add("Code Stock", $p_url, " order by sg_code asc", "order by sg_code desc", "sa", "sd");
53 $tb->add("Dépôt", $p_url, " order by r_name asc", "order by r_name desc", "ra", "rd");
54 $tb->add("Fiche", $p_url, " order by 2 asc", "order by 2 desc", "fa", "fd");
55 $tb->add("Commentaire", $p_url, " order by coalesce(sg_comment,jr_comment) asc", "order by coalesce(sg_comment,jr_comment) desc", "ca", "cd");
56 $tb->add("Montant", $p_url, " order by j_montant asc", "order by j_montant desc", "ja", "jd");
57 $tb->add("Quantité", $p_url, " order by sg_quantity asc", "order by sg_quantity desc", "qa", "qd");
58 $tb->add("IN/OUT", $p_url, " order by (case when sg_type='c' then 'OUT' when sg_type='c' then 'IN' end ) asc", "order by (case when sg_type='c' then 'OUT' when sg_type='c' then 'IN' end ) desc", "ta", "td");
59 $order = (isset($p_array['ord'])) ? $p_array['ord'] : 'da';
60
61 $sql.=$tb->get_sql_order($order);
62 $step = $_SESSION[SESSION_KEY.'g_pagesize'];
63 $page = (isset($_GET['offset'])) ? $_GET['page'] : 1;
64 $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0;
65
66 $res = $this->cn->exec_sql($sql);
67
69
70 $nav_bar = navigation_bar($offset, $max_row, 0, $page);
71
72 if ($step != -1)
73 $res = $this->cn->exec_sql($sql . " , sg_id asc limit " . $step . " offset " . $offset);
75
76 $this->search_box_button();
77 $this->search_box($p_array);
78 require_once NOALYSS_TEMPLATE.'/stock_histo.php';
81 }
$_GET['qcode']
static num_row($ret)
wrapper for the function pg_num_rows
static get_to_string($array, $start="?")
transform $_GET data to string
static print_window()
Javascript to print the current window.
create_query_histo($p_array)
export_stock_histo_form()
search_box_button()
search_box($p_array)
if($g_parameter->MY_STOCK=='N') if(isset( $_POST[ 'add_stock'])) if(isset($_POST['mod_stock'])) $tb
navigation_bar($p_offset, $p_line, $p_size=0, $p_page=1, $p_javascript="")
Create a navigation_bar (pagesize)

References $_GET, $max_row, $offset, $order, $p_array, $p_url, $res, $sql, $step, $tb, cn, create_query_histo(), export_stock_histo_form(), navigation_bar(), DatabaseCore\num_row(), search_box(), and search_box_button().

+ Here is the call graph for this function:

◆ search_box()

Stock::search_box ( $p_array)

Definition at line 107 of file stock.class.php.

108 {
109 // Declaration
110 global $g_user;
111 $wrepo = HtmlInput::select_stock($this->cn, "wrepo", 'R');
112 $wrepo->value[] = array('value' => -1, 'label' => 'Tous les dépôts');
113
114 $wdate_start = new IDate('wdate_start');
115 $wdate_end = new IDate('wdate_end');
116 $wamount_start = new INum('wamount_start');
117 $wamount_end = new INum('wamount_end');
118 $wcard = new ICard('wcard');
119 $wcode_stock = new ICard('wcode_stock');
120 $wdirection = new ISelect("wdirection");
121
122 // value
123 $wrepo->selected = HtmlInput::default_value("wrepo", -1, $p_array);
124
125 // Date start / end
126 $exercice = $g_user->get_exercice();
127 $periode = new Periode($this->cn);
128 list($periode_start, $periode_end) = $periode->get_limit($exercice);
129
130 $wdate_start->value = HtmlInput::default_value("wdate_start", $periode_start->first_day(), $p_array);
131 $wdate_end->value = HtmlInput::default_value("wdate_end", $periode_end->last_day(), $p_array);
132 //amounts
133 $wamount_start->value = HtmlInput::default_value("wamount_start", 0, $p_array);
134 $wamount_end->value = HtmlInput::default_value("wamount_end", 0, $p_array);
135
136 //Card
137 $wcard->extra = "all";
138 $wcard->set_attribute("typecard", "all");
139 $wcard->value = HtmlInput::default_value("wcard", "", $p_array);
140
141 //Card stock
142 $wcode_stock->extra = " [sql] fd_id=500000 ";
143 $wcode_stock->set_attribute("typecard", "[sql] fd_id=500000");
144 $wcode_stock->value = HtmlInput::default_value("wcard", "", $p_array);
145
146 // Repository
147 $wcode_stock->value = HtmlInput::default_value("wcode_stock", "", $p_array);
148
149 //Direction
150 $wdirection->value = array(
151 array('value' => "-1", 'label' => "Tout"),
152 array('value' => "c", 'label' => "OUT"),
153 array('value' => "d", 'label' => "IN")
154 );
155 $wdirection->selected = HtmlInput::default_value("wdirection", "-1", $p_array);
156
157 require_once NOALYSS_TEMPLATE.'/stock_histo_search.php';
158 }
static select_stock($p_cn, $p_name, $p_mode)
Create an ISelect object containing the available repository for reading or writing.
static default_value($ind, $default, $array)
return default if the value if the value doesn't exist in the array
$periode_start
Definition fiche.inc.php:50
$periode_end
Definition fiche.inc.php:51

References $exercice, $g_user, $p_array, $periode, $periode_end, $periode_start, and cn.

Referenced by history().

◆ search_box_button()

Stock::search_box_button ( )

Definition at line 101 of file stock.class.php.

102 {
103 $bt = HtmlInput::button("Recherche", "Recherche", ' onclick="$(\'histo_search_d\').show();"');
104 echo $bt;
105 }
static button($p_name, $p_value, $p_javascript="", $p_class="smallbutton")

Referenced by history().

◆ summary()

Stock::summary ( $p_array)

Definition at line 256 of file stock.class.php.

257 {
258 global $cn, $g_user;
260 // Build condition
261 $a_repository = $g_user->get_available_repository('R');
262 $a_code = $cn->get_array("select distinct sg_code from tmp_stockgood_detail where s_id=$1", array($tmp_id));
263 if (isset($p_array['present']))
264 {
265 $present = $p_array['present'];
266 }
267 else
268 {
269 $present = 'T';
270 }
271 if ($present == 'T')
272 {
273 require_once NOALYSS_TEMPLATE.'/stock_summary_table.php';
274 }
275 if ($present == 'L')
276 {
277 require_once NOALYSS_TEMPLATE.'/stock_summary_list.php';
279
280 }
282 }
export_stock_summary_list_form()
build_tmp_table($p_array)

References Data_SQL\$cn, $g_user, $p_array, $tmp_id, build_tmp_table(), and export_stock_summary_list_form().

+ Here is the call graph for this function:

The documentation for this class was generated from the following file: