|
|
@@ -0,0 +1,396 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+
|
|
|
+function RECOUNT_STATS_BILLS_FVAT_POS() {
|
|
|
+
|
|
|
+ $db = DB::getDB();
|
|
|
+ if (!$db) {
|
|
|
+ echo '<div class="alert alert-danger">' . "Database Error" . '</div>';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $sqlList = array();
|
|
|
+
|
|
|
+ ?>
|
|
|
+<div class="jumbotron">
|
|
|
+ <div class="container">
|
|
|
+ <form class="form-inline" method="POST">
|
|
|
+ <input type="hidden" name="task" value="update_year" />
|
|
|
+ <label for="update_year">Aktualizuj dane dla roku:</label>
|
|
|
+ <div class="input-group date" id="fldUpdateYear">
|
|
|
+ <input type="text" name="update_year" class="form-control" value="" />
|
|
|
+ <span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>
|
|
|
+ </div>
|
|
|
+ <button type="submit" id="fldUpdateYearBtn" class="btn btn-primary" autocomplete="off">
|
|
|
+ Aktualizuj
|
|
|
+ </button>
|
|
|
+ </form>
|
|
|
+<!--
|
|
|
+ <div class="pull-right">
|
|
|
+ <form class="form-inline" method="POST">
|
|
|
+ <input type="hidden" name="task" value="rebuild_table" />
|
|
|
+ <input type="hidden" name="rebuild_table" value="1" />
|
|
|
+ <input type="submit" class="btn btn-default" value="Odbuduj tabelę" />
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+-->
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
+<script type="text/javascript">
|
|
|
+jQuery(document).ready(function () {
|
|
|
+ jQuery('#fldUpdateYearBtn').on('click', function () {
|
|
|
+ jQuery(this).text(jQuery(this).text() + '...').attr('disabled', 'disabled');
|
|
|
+ jQuery(this).parent().submit();
|
|
|
+ })
|
|
|
+
|
|
|
+ jQuery("#fldUpdateYear").datetimepicker({
|
|
|
+ format: "YYYY",
|
|
|
+ defaultDate: new Date(<?php echo date("Y"); ?>, 0, 1),
|
|
|
+ minDate: new Date(2014, 0, 1),
|
|
|
+ // maxDate: "<?php echo date("Y"); ?>"
|
|
|
+ });
|
|
|
+});
|
|
|
+</script>
|
|
|
+ <?php
|
|
|
+
|
|
|
+
|
|
|
+ $task = V::get('task', '', $_REQUEST);
|
|
|
+ if ('update_year' == $task || 'rebuild_table' == $task) {
|
|
|
+ $args = array();
|
|
|
+ $args['rebuild_table'] = ('1' != V::get('rebuild_table', '', $_REQUEST));
|
|
|
+ $args['update_year'] = V::get('update_year', '', $_REQUEST, 'int');
|
|
|
+
|
|
|
+ $sql_date_filter = date('Y');
|
|
|
+
|
|
|
+ if (!$args['rebuild_table']) {
|
|
|
+ $sqlList[] = "DROP TABLE `stats_BILLS_FVAT_POS`; ";
|
|
|
+
|
|
|
+ $sqlList[] = "CREATE TABLE IF NOT EXISTS `stats_BILLS_FVAT_POS` (
|
|
|
+ `ID` int(11) NOT NULL,
|
|
|
+ `ID_BILLING_USERS` int(11) NOT NULL,
|
|
|
+ `A_ADM_COMPANY` varchar(64) NOT NULL DEFAULT '',
|
|
|
+ `id_owner` int(11) NOT NULL,
|
|
|
+ `MONTH` date NOT NULL,
|
|
|
+ `ID_SERVICES` int(11) NOT NULL DEFAULT '0',
|
|
|
+ `ID_DEALS_TABLE` int(11) NOT NULL DEFAULT '0',
|
|
|
+ `INCOME` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
|
+ `P_OFFER_COSTS` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
|
+ `P_OFFER_ZYSK` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
|
+ `ID_OFFERS` int(11) NOT NULL DEFAULT '0',
|
|
|
+ `S_ADDRESS_STREET` varchar(32) NOT NULL DEFAULT '',
|
|
|
+ `T_TELBOX_BUILDING_IN` varchar(16) NOT NULL DEFAULT '',
|
|
|
+ `P_OSIEDLE` varchar(64) NOT NULL DEFAULT '',
|
|
|
+ `M_REWIR` varchar(255) NOT NULL DEFAULT '',
|
|
|
+ `NAME_LIST_SERVICES` varchar(16) NOT NULL DEFAULT '',
|
|
|
+ `P_SERVICE` varchar(16) NOT NULL DEFAULT '',
|
|
|
+ `P_NET_SPEED` varchar(16) NOT NULL DEFAULT '',
|
|
|
+ `P_NET_GROUP` varchar(32) NOT NULL DEFAULT '',
|
|
|
+ `P_TV_NAME` varchar(64) NOT NULL DEFAULT '',
|
|
|
+ `P_TEL_NAME` varchar(64) NOT NULL DEFAULT '',
|
|
|
+ `FVAT_POS_DESCR` varchar(64) NOT NULL DEFAULT '',
|
|
|
+ KEY `MONTH` (`MONTH`)
|
|
|
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "TRUNCATE TABLE `stats_BILLS_FVAT_POS`; ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($args['update_year']) {
|
|
|
+ $sql_date_filter = $args['update_year'];
|
|
|
+ $sqlList[] = "delete from `stats_BILLS_FVAT_POS` where `MONTH` like '{$sql_date_filter}-%' ; ";
|
|
|
+ }
|
|
|
+
|
|
|
+ // -- DATE_FORMAT(f.`DATE_FROM`,'%Y-%m-00')
|
|
|
+ // -- (f.`DATE_FROM` like '{$sql_date_filter}-%')
|
|
|
+ $sqlList[] = "insert into `SES_USERS2`.`stats_BILLS_FVAT_POS`
|
|
|
+ (`ID`, `ID_SERVICES`, `MONTH`, `INCOME`, `ID_OFFERS`
|
|
|
+ , `ID_BILLING_USERS`, `id_owner`
|
|
|
+ , `FVAT_POS_DESCR`
|
|
|
+ )
|
|
|
+ select f.`ID`, f.`ID_SERVICES`, DATE_FORMAT(fv.`BILL_DATE`,'%Y-%m-00'), f.`PRICE` * f.`AMMOUNT`, f.`ID_OFFERS`
|
|
|
+ , fv.`ID_BILLING_USERS`, fv.`id_owner`
|
|
|
+ , f.`DESCR`
|
|
|
+ from `billing2013`.`BILLS_FVAT_POS` as f, `billing2013`.`BILLS_FVAT` as fv
|
|
|
+ where
|
|
|
+ (fv.`BILL_DATE` like '{$sql_date_filter}-%')
|
|
|
+ and f.`ID_BILLS_FVAT`=fv.`ID`
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `SERVICES` as s
|
|
|
+ set
|
|
|
+ f.`S_ADDRESS_STREET`=s.`S_ADDRESS_STREET`
|
|
|
+ , f.`NAME_LIST_SERVICES`=s.`NAME_LIST_SERVICES`
|
|
|
+ , f.`ID_DEALS_TABLE`=s.`ID_DEALS_TABLE`
|
|
|
+ where s.`ID`=f.`ID_SERVICES`
|
|
|
+ and f.`ID_SERVICES`>0
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `DEALS_TABLE` as d
|
|
|
+ set
|
|
|
+ f.`S_ADDRESS_STREET`=d.`S_ADDRESS_STREET`
|
|
|
+ where d.`ID`=f.`ID_DEALS_TABLE`
|
|
|
+ and f.`S_ADDRESS_STREET`=''
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `USERS2_MARKETING` as m, `BUILDINGS` as b
|
|
|
+ set
|
|
|
+ f.`T_TELBOX_BUILDING_IN`=m.`T_TELBOX_BUILDING_IN`
|
|
|
+ , f.`M_REWIR`=b.`M_REWIR`
|
|
|
+ , f.`P_OSIEDLE`=IF(b.`P_OSIEDLE`!=''
|
|
|
+ , CONCAT(b.`S_ADDRESS_CITY`, ' - ', b.`P_OSIEDLE`)
|
|
|
+ , b.`S_ADDRESS_CITY`
|
|
|
+ )
|
|
|
+ where m.`S_ADDRESS_STREET`=f.`S_ADDRESS_STREET`
|
|
|
+ and b.`S_ADDRESS_STREET`=m.`T_TELBOX_BUILDING_IN`
|
|
|
+ and f.`S_ADDRESS_STREET`!=''
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `USERS2_OFFERS` as o, `USERS2_OFFERS_COSTS_GROUPS` as c
|
|
|
+ set
|
|
|
+ f.`P_SERVICE`=IF(o.`P_SERVICE`='OPCJE'
|
|
|
+ , concat(o.`P_SERVICE`, '_', o.`P_SERVICE_PARENT`)
|
|
|
+ , o.`P_SERVICE`
|
|
|
+ )
|
|
|
+ , f.`P_NET_SPEED`=IF(o.`P_SERVICE` in('NET')
|
|
|
+ , o.`P_S_PARAM1`
|
|
|
+ , '')
|
|
|
+ , f.`P_TV_NAME`=IF(o.`P_SERVICE` in('TV','TVC','TVCP')
|
|
|
+ , o.`P_SERVICE_NAME`
|
|
|
+ , '')
|
|
|
+ , f.`P_TEL_NAME`=IF(o.`P_SERVICE` in('TEL')
|
|
|
+ , o.`P_SERVICE_NAME`
|
|
|
+ , '')
|
|
|
+ , f.`P_OFFER_COSTS`=c.`P_OFFER_COSTS`
|
|
|
+ where o.`ID`=f.`ID_OFFERS`
|
|
|
+ and c.`ID`=o.`ID_COSTS_GROUPS`
|
|
|
+ and f.`ID_OFFERS`>0
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "update `stats_BILLS_FVAT_POS` as f, `USERS2_OFFERS` as o, `USERS2_PRODUKT` as p
|
|
|
+ set
|
|
|
+ f.`P_NET_GROUP`=p.`P_NAME`
|
|
|
+ where o.`ID`=f.`ID_OFFERS`
|
|
|
+ and p.`ID`=o.`ID_PRODUKT`
|
|
|
+ and f.`ID_OFFERS`>0
|
|
|
+ and o.`ID_PRODUKT`>0
|
|
|
+ and o.`P_SERVICE`='NET'
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "update `stats_BILLS_FVAT_POS` as f
|
|
|
+ set
|
|
|
+ f.`P_OFFER_ZYSK`=f.`INCOME` - f.`P_OFFER_COSTS`
|
|
|
+ ";
|
|
|
+
|
|
|
+ $sqlList[] = "update `stats_BILLS_FVAT_POS` as f
|
|
|
+ join `COMPANIES` as c on(c.`ID`=f.`ID_BILLING_USERS`)
|
|
|
+ set
|
|
|
+ f.`A_ADM_COMPANY`=c.`A_ADM_COMPANY`
|
|
|
+ ";
|
|
|
+ }
|
|
|
+ else if ('FVAT_POS_CHARTS' == $task) {
|
|
|
+ $DBG = V::get('DBG', '', $_REQUEST);
|
|
|
+
|
|
|
+ $args = array();
|
|
|
+ $args['MONTH'] = V::get('MONTH', '', $_REQUEST);
|
|
|
+ $args['id_owner'] = V::get('id_owner', '', $_REQUEST);
|
|
|
+ $args['P_SERVICE'] = V::get('P_SERVICE', '', $_REQUEST);
|
|
|
+
|
|
|
+ $db = DB::getDB();
|
|
|
+
|
|
|
+ $chart = new stdClass();
|
|
|
+ $chart->select = array();
|
|
|
+ $chart->groupBy = array();
|
|
|
+ $chart->osY = '';
|
|
|
+ $chart->osY_values = array();
|
|
|
+ $chart->osX = 'MONTH';
|
|
|
+ $chart->osX_values = array();
|
|
|
+ $chart->osX_range_min = '2013-01-00';
|
|
|
+ $chart->osX_range_max = '2014-05-00';
|
|
|
+
|
|
|
+ $chart->groupBy[] = 'MONTH';
|
|
|
+ $chart->groupBy[] = 'id_owner';
|
|
|
+ $chart->groupBy[] = 'P_SERVICE';
|
|
|
+ $chart->select['cnt'] = 'count(1)';
|
|
|
+ $chart->select['sum_INCOME'] = 'sum(`INCOME`)';
|
|
|
+
|
|
|
+ $sql_select = array();
|
|
|
+ foreach ($chart->select as $kLabel => $vField) {
|
|
|
+ $sql_select[] = "{$vField} as {$kLabel}";
|
|
|
+ }
|
|
|
+ foreach ($chart->groupBy as $vField) {
|
|
|
+ if (!array_key_exists($vField, $chart->select)) {
|
|
|
+ $sql_select[] = "{$vField} as {$vField}";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $sql_select = implode(',', $sql_select);
|
|
|
+ $sql_group_by = implode(',', $chart->groupBy);
|
|
|
+
|
|
|
+ $chart->data = array();
|
|
|
+
|
|
|
+ $sql = "select {$sql_select}
|
|
|
+ from `stats_BILLS_FVAT_POS`
|
|
|
+ where `{$chart->osX}` between '{$chart->osX_range_min}' and '{$chart->osX_range_max}'
|
|
|
+ group by {$sql_group_by}
|
|
|
+ ";
|
|
|
+ if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
|
|
|
+ $res = $db->query($sql);
|
|
|
+ while ($r = $db->fetch($res)) {
|
|
|
+ if (empty($r->P_SERVICE)) {
|
|
|
+ $r->P_SERVICE = 'Unknown';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isset($r->MONTH) && substr($r->MONTH, -3) == '-00') {
|
|
|
+ $r->MONTH = substr($r->MONTH, 0, -3);
|
|
|
+ }
|
|
|
+
|
|
|
+ $r->cnt = (int)$r->cnt;
|
|
|
+ $r->sum_INCOME = (double)$r->sum_INCOME;
|
|
|
+
|
|
|
+ $chart->data[] = $r;
|
|
|
+
|
|
|
+ foreach ($chart->groupBy as $vField) {
|
|
|
+ if ($vField == $chart->osX) {
|
|
|
+ $chart->osX_values[$r->{$chart->osX}] = true;
|
|
|
+ }
|
|
|
+ else if (!array_key_exists($vField, $chart->select)) {
|
|
|
+ $chart->osY_values[$vField][$r->{$vField}] = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ($chart->osY_values as $k => $v) {
|
|
|
+ $chart->osY_values[$k] = array_keys($v);
|
|
|
+ sort($chart->osY_values[$k]);
|
|
|
+ }
|
|
|
+ $chart->osX_values = array_keys($chart->osX_values);
|
|
|
+ sort($chart->osX_values);
|
|
|
+
|
|
|
+ if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$chart->data (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($chart->data);echo'</pre>';}
|
|
|
+ if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$chart->osY_values (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($chart->osY_values);echo'</pre>';}
|
|
|
+
|
|
|
+ ?>
|
|
|
+ <script src="stuff/RGraph/libraries/RGraph.common.core.js"></script>
|
|
|
+ <script src="stuff/RGraph/libraries/RGraph.common.dynamic.js"></script>
|
|
|
+ <script src="stuff/RGraph/libraries/RGraph.common.key.js"></script>
|
|
|
+ <script src="stuff/RGraph/libraries/RGraph.drawing.rect.js"></script>
|
|
|
+ <script src="stuff/RGraph/libraries/RGraph.bar.js"></script>
|
|
|
+ <script src="stuff/RGraph/libraries/RGraph.line.js"></script>
|
|
|
+
|
|
|
+ <canvas id="chart-canvas" width="800" height="500" style="float:left; margin:0 20px; border:1px solid #666;">[No canvas support]</canvas>
|
|
|
+ <form action="" method="post" id="chart-frm">
|
|
|
+ <div class="chart-frm-cnt">
|
|
|
+ </div>
|
|
|
+ <button id="chart-frm-btn" class="btn btn-primary">Rysuj wykres</button>
|
|
|
+ </form>
|
|
|
+ <script>
|
|
|
+ var frm = jQuery('#chart-frm')
|
|
|
+ , frmCnt = frm.find('.chart-frm-cnt')
|
|
|
+ , chart_data = <?php echo json_encode($chart->data); ?>
|
|
|
+ , chart_select = <?php echo json_encode($chart->select); ?>
|
|
|
+ , chart_groupBy = <?php echo json_encode($chart->groupBy); ?>
|
|
|
+ , chart_osX = <?php echo json_encode($chart->osX); ?>
|
|
|
+ , chart_osX_values = <?php echo json_encode($chart->osX_values); ?>
|
|
|
+ , chart_values = <?php echo json_encode($chart->osY_values); ?>;
|
|
|
+
|
|
|
+ for (var i in chart_values) {
|
|
|
+ var selWrap = jQuery('<div></div>');
|
|
|
+ jQuery('<label for="' + chart_values[i][j] + '">' + i + ': </label>').appendTo(selWrap);
|
|
|
+ var sel = jQuery('<select name="' + i + '"></select>').appendTo(selWrap);
|
|
|
+ sel.append('<option value="' + "all" + '">' + "dowolne" + '</select>');
|
|
|
+ for (var j in chart_values[i]) {
|
|
|
+ sel.append('<option value="' + chart_values[i][j] + '">' + chart_values[i][j] + '</select>');
|
|
|
+ }
|
|
|
+ selWrap.appendTo(frmCnt);
|
|
|
+ }
|
|
|
+ var selWrap = jQuery('<div></div>');
|
|
|
+ jQuery('<label for="chart_select">Wartość: </label>').appendTo(selWrap);
|
|
|
+ var sel = jQuery('<select name="chart_select"></select>').appendTo(selWrap);
|
|
|
+ for (var i in chart_select) {
|
|
|
+ sel.append('<option value="' + i + '">' + i + ': ' + chart_select[i] + '</select>');
|
|
|
+ }
|
|
|
+ selWrap.appendTo(frmCnt);
|
|
|
+
|
|
|
+ jQuery('#chart-frm-btn').on('click', function(evt){
|
|
|
+ var data = []
|
|
|
+ , canvas = document.getElementById('chart-canvas')
|
|
|
+ , frmNode = document.getElementById('chart-frm')
|
|
|
+ , fld_name = jQuery(frmNode['chart_select']).val();
|
|
|
+console.log('chart_data', chart_data);
|
|
|
+ var chart_data_filtered = chart_data.filter(function (item) {
|
|
|
+ for (var i in chart_groupBy) {
|
|
|
+ if (chart_groupBy[i] == chart_osX) continue;
|
|
|
+ var frmVal = jQuery(frmNode[chart_groupBy[i]]).val();
|
|
|
+ if (frmVal == 'all') continue;
|
|
|
+ if (item[chart_groupBy[i]] != frmVal) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ });
|
|
|
+console.log('chart_data_filtered', chart_data_filtered);
|
|
|
+
|
|
|
+ chart_data_filtered.sort(function(a, b) {
|
|
|
+ if (a[chart_osX] > b[chart_osX]) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else if (a[chart_osX] < b[chart_osX]) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ });
|
|
|
+
|
|
|
+ var d = chart_data_filtered.shift();
|
|
|
+console.log('chart_data_filtered.shift', d);
|
|
|
+ for (var v in chart_osX_values) {
|
|
|
+ if (!d || d[chart_osX] != chart_osX_values[v]) {
|
|
|
+ data.push(0);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ data.push(d[fld_name]);
|
|
|
+ d = chart_data_filtered.shift();
|
|
|
+ }
|
|
|
+
|
|
|
+ RGraph.Clear(canvas);
|
|
|
+ var bar = new RGraph.Bar('chart-canvas', data)
|
|
|
+ .Set('labels', chart_osX_values)
|
|
|
+ .Set('gutter.left', 50)
|
|
|
+ .Set('hmargin', 15)
|
|
|
+ .Set('strokestyle', 'white')
|
|
|
+ .Set('linewidth', 1)
|
|
|
+ .Set('shadow', true)
|
|
|
+ .Set('shadow.color', '#ccc')
|
|
|
+ .Set('shadow.offsetx', 0)
|
|
|
+ .Set('shadow.offsety', 0)
|
|
|
+ .Set('shadow.blur', 10)
|
|
|
+ .Draw();
|
|
|
+ // .Set('colors', ['Gradient(#99f:#27afe9:#058DC7:#058DC7)', 'Gradient(#94f776:#50B332:#B1E59F)', 'Gradient(#fe783e:#EC561B:#F59F7D)'])
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+ </script>
|
|
|
+ <?php
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ }
|
|
|
+
|
|
|
+ if (empty($sqlList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $errors = false;
|
|
|
+ foreach ($sqlList as $sql) {
|
|
|
+ if(V::get('DBG','',$_GET)){echo'<pre style="max-height:200px;overflow:auto;border:1px solid green;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
|
|
|
+ $res = $db->query($sql);
|
|
|
+ if ($db->has_errors()) {
|
|
|
+ $errors = true;
|
|
|
+ if(V::get('DBG','',$_GET)){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($db->get_errors());echo'</pre>';}
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($errors) {
|
|
|
+ echo '<div class="alert alert-danger">' . "Uwaga wystąpiły błędy - w czerwonej ramce" . '</div>';
|
|
|
+ } else {
|
|
|
+ echo '<div class="alert alert-success">' . "Operacje zakończone pomyślnie" . '</div>';
|
|
|
+ }
|
|
|
+
|
|
|
+}
|