1
Changeset 45f0349 – MultiMag

Changeset 45f0349


Ignore:
Timestamp:
Jan 17, 2012, 2:21:53 PM (11 years ago)
Author:
Blacklight <blacklight@…>
Branches:
master
Children:
c0dde68
Parents:
c214e53
Message:
  • Переработка системы отчётов. Теперь каждый отчёт - отдельный файл
  • Продолжается работа над ошибками
Location:
web
Files:
5 added
5 edited

Legend:

Unmodified
Added
Removed
  • web/css/poseditor.js

    rc214e53 r45f0349  
    282282                                document.getElementById('btn_sn_add').onclick=snAdd
    283283                               
    284                                 // ??????????????????????????????????????????????????????????????????????????????????????????
    285284                                $("#sn").autocomplete("/doc.php", {
    286285                                        delay:300,
     
    294293                                        extraParams:{'mode':'srv','opt':'snp', 'doc': '1', 'pos': line}
    295294                                });
     295                               
     296                                document.getElementById('sn').onkeyup=function(event)
     297                                {
     298                                        if(event.keyCode==13)   
     299                                        {
     300                                                snAdd(event)
     301                                        }
     302                                }
     303                               
    296304                        }
    297305                        else    jAlert(json.message,"Ошибка", {}, 'icon_err')
  • web/doc_otchet.php

    rc214e53 r45f0349  
    3434        'doc_otchet.php?mode=sverka_op' => 'Акт сверки (оперативный)',
    3535        'doc_otchet.php?mode=balance' => 'Баланс',
    36         'doc_otchet.php?mode=dolgi' => 'Долги',
    37         'doc_otchet.php?mode=ostatki' => 'Остатки на складе',
    38         'doc_otchet.php?mode=ostatkinadatu' => 'Остатки на складе на дату',
    3936        'doc_otchet.php?mode=agent_otchet' => 'Отчет по агенту',
    40         'doc_otchet.php?mode=bankday' => 'Отчёт за день по банку',
    41         'doc_otchet.php?mode=kassday' => 'Отчёт за день по кассе',
    4237        'doc_otchet.php?mode=img_otchet' => 'Отчет по изображениям',
    4338        'doc_otchet.php?mode=komplekt' => 'Отчет по комплектующим',
     
    4742        'doc_otchet.php?mode=doc_reestr' => 'Реестр документов',
    4843        'doc_otchet.php?mode=fin_otchet' => 'Сводный финансовый отчёт',
    49         'doc_otchet.php' => 'Другие отчёты');
     44        'doc_reports.php' => 'Другие отчёты');
    5045}
    5146
     
    5651        <a href='doc_otchet.php?mode=sverka'><div>Акт сверки</div></a>
    5752        <a href='doc_otchet.php?mode=balance'><div>Баланс</div></a>
    58         <a href='doc_otchet.php?mode=dolgi'><div>Долги</div></a>
    59         <a href='doc_otchet.php?mode=ostatki'><div>Остатки на складе</div></a>
    60         <a href='doc_otchet.php?mode=ostatkinadatu'><div>Остатки на складе на дату</div></a>
    6153        <a href='doc_otchet.php?mode=agent_otchet'><div>Отчет по агенту</div></a>
    62         <a href='doc_otchet.php?mode=bankday'><div>Отчёт за день по банку</div></a>
    63         <a href='doc_otchet.php?mode=kassday'><div>Отчёт за день по кассе</div></a>
    6454        <a href='doc_otchet.php?mode=komplekt'><div>Отчет по комплектующим</div></a>
    6555        <a href='doc_otchet.php?mode=prod'><div>Отчёт по продажам</div></a>
     
    7060        <a href='doc_otchet.php?mode=fin_otchet'><div>Сводный финансовый отчёт</div></a>
    7161        <hr>
    72         <a href='doc_otchet.php'><div>Другие отчёты</div></a>";
     62        <a href='doc_reports.php'><div>Другие отчёты</div></a>";
    7363}
    7464
     
    184174}
    185175
    186 class Report_Store
    187 {
    188         function Form()
    189         {
    190                 global $tmpl;
    191                 $tmpl->SetText("<h1>Остатки товара на складе</h1>
    192                 <form action='' method='post'>
    193                 <input type='hidden' name='mode' value='ostatki'>
    194                 <input type='hidden' name='opt' value='make'>
    195                 <fieldset><legend>Отобразить цены</legend>");
    196                 $res=mysql_query("SELECT `id`, `name` FROM `doc_cost` ORDER BY `id`");
    197                 if(mysql_errno())       throw new MysqlException("Не удалось получить список цен");
    198                 while($nxt=mysql_fetch_row($res))
    199                 {
    200                         $tmpl->AddText("<label><input type='checkbox' name='cost[$nxt[0]]' value='$nxt[0]'>$nxt[1]</label><br>");
    201                 }
    202                 $tmpl->AddText("</fieldset><br>
    203                 Группа товаров:<br>");
    204                 GroupSelBlock();
    205                 $tmpl->AddText("<button type='submit'>Создать отчет</button></form>"); 
    206         }
    207        
    208         function MakeHTML()
    209         {
    210                 global $tmpl;
    211                 $gs=rcv('gs');
    212                 $g=@$_POST['g'];
    213                 $cost=@$_POST['cost'];
    214                 $tmpl->LoadTemplate('print');
    215                 $tmpl->SetText("<h1>Остатки товара на складе</h1>
    216                 <table width=100%><tr><th>N<th>Наименование<th>Количество<th>Актуальная цена<br>поступления<th>Базовая цена<th>Наценка<th>Сумма по АЦП<th>Сумма по базовой");
    217                 $col_count=8;
    218                 if(is_array($cost))
    219                 {
    220                         $res=mysql_query("SELECT `id`, `name` FROM `doc_cost` ORDER BY `name`");
    221                         if(mysql_errno())       throw new MysqlException("Не удалось получить список цен");
    222                         $costs=array();
    223                         while($nxt=mysql_fetch_row($res))       $costs[$nxt[0]]=$nxt[1];
    224                         foreach($cost as $id => $value)
    225                         {
    226                                 $tmpl->AddText("<th>".$costs[$id]);
    227                                 $col_count++;
    228                         }
    229                 }
    230                 $sum=$bsum=$summass=0;
    231                 $res_group=mysql_query("SELECT `id`, `name` FROM `doc_group` ORDER BY `id`");
    232                 while($group_line=mysql_fetch_assoc($res_group))
    233                 {
    234                         if($gs && is_array($g))
    235                                 if(!in_array($group_line['id'],$g))     continue;
    236                        
    237                         $tmpl->AddText("<tr><td colspan='$col_count' class='m1'>{$group_line['id']}. {$group_line['name']}</td></tr>");
    238                
    239                
    240                         $res=mysql_query("SELECT `doc_base`.`id`, `doc_base`.`name`, `doc_base`.`cost`,
    241                         (SELECT SUM(`cnt`) FROM `doc_base_cnt` WHERE `doc_base_cnt`.`id`=`doc_base`.`id` GROUP BY `doc_base_cnt`.`id`) AS `count`,
    242                         `doc_base_dop`.`mass`
    243                         FROM `doc_base`
    244                         LEFT JOIN `doc_base_dop` ON `doc_base_dop`.`id`=`doc_base`.`id`
    245                         WHERE `doc_base`.`group`='{$group_line['id']}'
    246                         ORDER BY `doc_base`.`name`");
    247                         if(mysql_errno())       throw new MysqlException("Не удалось получить список наименований");
    248                        
    249                         while($nxt=mysql_fetch_row($res))
    250                         {
    251                                 if($nxt[3]<=0) continue;
    252                                 $act_cost=sprintf('%0.2f',GetInCost($nxt[0]));
    253                                 $cost_p=sprintf("%0.2f",$nxt[2]);
    254                                 $sum_p=sprintf("%0.2f",$act_cost*$nxt[3]);
    255                                 $bsum_p=sprintf("%0.2f",$nxt[2]*$nxt[3]);
    256                                 $sum+=$act_cost*$nxt[3];
    257                                 $bsum+=$nxt[2]*$nxt[3];
    258                                 if($nxt[3]<0) $nxt[3]='<b>'.$nxt[3].'</b/>';
    259                                 $summass+=$nxt[3]*$nxt[4];
    260                                
    261                                 $nac=sprintf("%0.2f р. (%0.2f%%)",$cost_p-$act_cost,($cost_p/$act_cost)*100-100);
    262                                
    263                                 $tmpl->AddText("<tr><td>$nxt[0]<td>$nxt[1]<td>$nxt[3]<td>$act_cost р.<td>$cost_p р.<td>$nac<td>$sum_p р.<td>$bsum_p р.");
    264                                 if(is_array($cost))
    265                                 {
    266                                         foreach($cost as $id => $value)
    267                                         {
    268                                                 $tmpl->AddText("<td>".GetCostPos($nxt[0], $id));
    269                                         }
    270                                 }
    271                         }
    272                 }
    273                 $tmpl->AddText("<tr><td colspan='6'><b>Итого:</b><td>$sum р.<td>$bsum р.
    274                 </table><h3>Общая масса склада: $summass кг.</h3>");
    275         }
    276        
    277         function Run($opt)
    278         {
    279                 if($opt=='')    $this->Form();
    280                 else            $this->MakeHTML();     
    281         }
    282 };
    283 
    284 class Report_KassDay
    285 {
    286         function Form()
    287         {
    288                 global $tmpl;
    289                 $curdate=date("Y-m-d");
    290                 $tmpl->AddText("<h1>Отчёт по кассе за текущий день</h1>
    291                 <link rel='stylesheet' href='/css/jquery/ui/themes/base/jquery.ui.all.css'>
    292                 <script src='/css/jquery/ui/jquery.ui.core.js'></script>
    293                 <script src='/css/jquery/ui/jquery.ui.widget.js'></script>
    294                 <script src='/css/jquery/ui/jquery.ui.datepicker.js'></script>
    295                 <script src='/css/jquery/ui/i18n/jquery.ui.datepicker-ru.js'></script>
    296                 <form action=''>
    297                 <input type='hidden' name='mode' value='kassday'>
    298                 <input type='hidden' name='opt' value='ok'>
    299                 Выберите кассу:<br>
    300                 <select name='kass'>");
    301                 $res=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `ids`='kassa'  ORDER BY `num`");
    302                 while($nxt=mysql_fetch_row($res))
    303                 {
    304                         $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>");
    305                 }
    306                 $tmpl->AddText("</select><br>
    307                 Выберите дату:<br>
    308                 <input type='text' name='date' id='datepicker_f' value='$curdate'><br>
    309                 <button type='submit'>Сформировать</button></form>");
    310         }
    311        
    312         function MakeHTML()
    313         {
    314                 global $tmpl;
    315                 $tmpl->LoadTemplate('print');
    316                 $dt=rcv('date');
    317                 $kass=rcv('kass');
    318                 $res=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `ids`='kassa'");
    319                 if(mysql_errno())       throw new MysqlException("Не удалось получить список касс");
    320                 $kass_list=array();
    321                 while($nxt=mysql_fetch_row($res))       $kass_list[$nxt[0]]=$nxt[1];
    322                 $tmpl->AddText("<h1>Отчёт по кассе {$kass_list[$kass]} за $dt</h1>");           
    323                 $daystart=strtotime("$dt 00:00:00");
    324                 $dayend=strtotime("$dt 23:59:59");
    325                 $tmpl->AddText("<table width='100%'><tr><th>ID<th>Время<th>Документ<th>Приход<th>Расход<th>В кассе");                   
    326                 $res=mysql_query("SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`sum`, `doc_list`.`date`, `doc_list`.`altnum`, `doc_list`.`subtype`, `doc_types`.`name`, `doc_agent`.`name`, `doc_list`.`p_doc`, `t`.`name`, `p`.`altnum`, `p`.`subtype`, `p`.`date`, `p`.`sum`, `doc_list`.`kassa`, `doc_dopdata`.`value` AS `vk_value`
    327                 FROM `doc_list`
    328                 LEFT JOIN `doc_agent`           ON `doc_agent`.`id` = `doc_list`.`agent`
    329                 INNER JOIN `doc_types`          ON `doc_types`.`id` = `doc_list`.`type`
    330                 LEFT JOIN `doc_list` AS `p`     ON `p`.`id`=`doc_list`.`p_doc`
    331                 LEFT JOIN `doc_types` AS `t`    ON `t`.`id` = `p`.`type`
    332                 LEFT JOIN `doc_dopdata`         ON `doc_dopdata`.`doc`=`doc_list`.`id` AND `doc_dopdata`.`param`='v_kassu'
    333                 WHERE `doc_list`.`ok`>'0' AND ( `doc_list`.`type`='6' OR `doc_list`.`type`='7' OR `doc_list`.`type`='9')
    334                 AND (`doc_list`.`kassa`='$kass' OR `doc_dopdata`.`value`='$kass')
    335                 ORDER BY `doc_list`.`date`");
    336                 $sum=$daysum=$prix=$rasx=0;
    337                 $flag=0;
    338                 while($nxt=mysql_fetch_array($res))
    339                 {
    340                         $csum_p=$csum_r='';
    341                         if( !$flag && $nxt[3]>=$daystart && $nxt[3]<=$dayend)
    342                         {
    343                                 $flag=1;
    344                                 $sum_p=sprintf("%0.2f руб.",$sum);
    345                                 $tmpl->AddText("<tr><td colspan=5><b>На начало дня</b><td align='right'><b>$sum_p</b>");
    346                         }
    347                         if($nxt[1]==6)          $sum+=$nxt[2];
    348                         else if($nxt[1]==7)     $sum-=$nxt[2];
    349                         else if($nxt[1]==9)
    350                         {
    351                                 if($nxt['kassa']==$kass)
    352                                         $sum-=$nxt[2];
    353                                 else    $sum+=$nxt[2];
    354                         }
    355                         if($nxt[3]>=$daystart && $nxt[3]<=$dayend)
    356                         {
    357                                 if($nxt[1]==6)
    358                                 {
    359                                         $daysum+=$nxt[2];
    360                                         $prix+=$nxt[2];
    361                                         $csum_p=sprintf("%0.2f руб.",$nxt[2]);
    362                                 }
    363                                 else if($nxt[1]==7)
    364                                 {
    365                                         $daysum-=$nxt[2];
    366                                         $rasx+=$nxt[2];
    367                                         $csum_r=sprintf("%0.2f руб.",$nxt[2]);
    368                                 }
    369                                 else
    370                                 {
    371                                         if($nxt['kassa']==$kass)
    372                                         {
    373                                                 $daysum-=$nxt[2];
    374                                                 $rasx+=$nxt[2];
    375                                                 $csum_r=sprintf("%0.2f руб.",$nxt[2]);
    376                                         }
    377                                         else
    378                                         {
    379                                                 $daysum+=$nxt[2];
    380                                                 $prix+=$nxt[2];
    381                                                 $csum_p=sprintf("%0.2f руб.",$nxt[2]);
    382                                         }
    383                                 }
    384                                 if($nxt[8])     $sadd="<br><i>к $nxt[9] N$nxt[10]$nxt[11] от ".date("d-m-Y H:i:s",$nxt[12])." на сумму ".sprintf("%0.2f руб",$nxt[13])."</i>";
    385                                 else            $sadd='';
    386                                 if($nxt[1]==6)          $sadd.="<br>от $nxt[7]";
    387                                 else if($nxt[1]==7)     $sadd.="<br>для $nxt[7]";
    388                                 else if($nxt[1]==9)
    389                                 {
    390                                         if($nxt['kassa']==$kass)        $sadd.="<br>в кассу {$kass_list[$nxt['vk_value']]}";
    391                                         else                            $sadd.="<br>из кассы {$kass_list[$nxt['kassa']]}";
    392                                 }
    393                                 $dt=date("H:i:s",$nxt[3]);
    394                                 $sum_p=sprintf("%0.2f руб.",$sum);
    395                                
    396                                 $tmpl->AddText("<tr><td>$nxt[0]<td>$dt<td>$nxt[6] N$nxt[4]$nxt[5]   $sadd<td align='right'>$csum_p<td align='right'>$csum_r<td align='right'>$sum_p</tr>");     
    397                         }
    398                 }
    399                 if( !$flag)
    400                 {
    401                                 $sum_p=sprintf("%0.2f руб.",$sum);
    402                                 $tmpl->AddText("<tr><td colspan=5><b>На начало дня</b><td align='right'><b>$sum_p</b>");
    403                 }
    404                 if($flag)
    405                 {
    406                         $dsum_p=sprintf("%0.2f руб.",$daysum);
    407                         $psum_p=sprintf("%0.2f руб.",$prix);
    408                         $rsum_p=sprintf("%0.2f руб.",$rasx);
    409                         $tmpl->AddText("<tr><td>-<td>-<td><b>На конец дня</b><td align='right'><b>$psum_p</b><td align='right'><b>$rsum_p</b><td align='right'><b>$sum_p</b>");
    410                         $tmpl->AddText("<tr><td>-<td>-<td><b>Разница за смену</b><td align='right' colspan=3><b>$dsum_p</b>");
    411                 }
    412                 else    $tmpl->AddText("<tr><td>-<td>-<td><b>Нет данных по балансу на выбранную дату</b><td align='right'><b>нет данных</b><td align='right'><b>нет данных</b><td align='right'><b>нет данных</b>");
    413                
    414                 $res=mysql_query("SELECT `name` FROM `users` WHERE `id`='{$_SESSION['uid']}'");
    415                 $nm=mysql_result($res,0,0);
    416                
    417                 $tmpl->AddText("</table><br><br>
    418                 Cоответствие сумм подтверждаю ___________________ ($nm)");
    419         }
    420        
    421         function Run($opt)
    422         {
    423                 if($opt=='')    $this->Form();
    424                 else            $this->MakeHTML();     
    425         }
    426 };
    427 
    428 class Report_BankDay
    429 {
    430         function Form()
    431         {
    432                 global $tmpl;
    433                 $curdate=date("Y-m-d");
    434                 $tmpl->AddText("<h1>Отчёт по банку за текущий день (вариант 2)</h1>
    435                 <link rel='stylesheet' href='/css/jquery/ui/themes/base/jquery.ui.all.css'>
    436                 <script src='/css/jquery/ui/jquery.ui.core.js'></script>
    437                 <script src='/css/jquery/ui/jquery.ui.widget.js'></script>
    438                 <script src='/css/jquery/ui/jquery.ui.datepicker.js'></script>
    439                 <script src='/css/jquery/ui/i18n/jquery.ui.datepicker-ru.js'></script>
    440                 <form action=''>
    441                 <input type='hidden' name='mode' value='bankday'>
    442                 <input type='hidden' name='opt' value='ok'>
    443                 Выберите кассу:<br>
    444                 <select name='kass'>");
    445                 $res=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `ids`='bank'  ORDER BY `num`");
    446                 while($nxt=mysql_fetch_row($res))
    447                 {
    448                         $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>");
    449                 }
    450                 $tmpl->AddText("</select><br>
    451                 Выберите дату:<br>
    452                 <input type='text' name='date' id='datepicker_f' value='$curdate'><br>
    453                 <button type='submit'>Сформировать</button></form>");
    454         }
    455        
    456         function MakeHTML()
    457         {
    458                 global $tmpl;
    459                 $tmpl->LoadTemplate('print');
    460                 $dt=rcv('date');
    461                 $kass=rcv('kass');
    462                 $res=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `ids`='bank'");
    463                 if(mysql_errno())       throw new MysqlException("Не удалось получить список банок");
    464                 $kass_list=array();
    465                 while($nxt=mysql_fetch_row($res))       $kass_list[$nxt[0]]=$nxt[1];
    466                 $tmpl->AddText("<h1>Отчёт по банку {$kass_list[$kass]} за $dt</h1>");           
    467                 $daystart=strtotime("$dt 00:00:00");
    468                 $dayend=strtotime("$dt 23:59:59");
    469                 $tmpl->AddText("<table width='100%'><tr><th>ID<th>Время<th>Документ<th>Приход<th>Расход<th>В банке");                   
    470                 $res=mysql_query("SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`sum`, `doc_list`.`date`, `doc_list`.`altnum`, `doc_list`.`subtype`, `doc_types`.`name`, `doc_agent`.`name`, `doc_list`.`p_doc`, `t`.`name`, `p`.`altnum`, `p`.`subtype`, `p`.`date`, `p`.`sum`, `doc_list`.`bank`
    471                 FROM `doc_list`
    472                 LEFT JOIN `doc_agent`           ON `doc_agent`.`id` = `doc_list`.`agent`
    473                 INNER JOIN `doc_types`          ON `doc_types`.`id` = `doc_list`.`type`
    474                 LEFT JOIN `doc_list` AS `p`     ON `p`.`id`=`doc_list`.`p_doc`
    475                 LEFT JOIN `doc_types` AS `t`    ON `t`.`id` = `p`.`type`
    476                 WHERE `doc_list`.`ok`>'0' AND ( `doc_list`.`type`='4' OR `doc_list`.`type`='5')
    477                 AND `doc_list`.`bank`='$kass'
    478                 ORDER BY `doc_list`.`date`");
    479                 if(mysql_errno())       throw new MysqlException("Не удалось получить данные отчёта".mysql_error());
    480                 $sum=$daysum=$prix=$rasx=0;
    481                 $flag=0;
    482                 $lastdate=0;
    483                 while($nxt=mysql_fetch_array($res))
    484                 {
    485                         $lastdate=$nxt[3];
    486                         $csum_p=$csum_r='';
    487                         if( !$flag && $nxt[3]>=$daystart && $nxt[3]<=$dayend)
    488                         {
    489                                 $flag=1;
    490                                 $sum_p=sprintf("%0.2f руб.",$sum);
    491                                 $tmpl->AddText("<tr><td colspan=5><b>На начало дня</b><td align='right'><b>$sum_p</b>");
    492                         }
    493                         if($nxt[1]==4)          $sum+=$nxt[2];
    494                         else if($nxt[1]==5)     $sum-=$nxt[2];
    495                         if($nxt[3]>=$daystart && $nxt[3]<=$dayend)
    496                         {
    497                                 if($nxt[1]==4)
    498                                 {
    499                                         $daysum+=$nxt[2];
    500                                         $prix+=$nxt[2];
    501                                         $csum_p=sprintf("%0.2f руб.",$nxt[2]);
    502                                 }
    503                                 else if($nxt[1]==5)
    504                                 {
    505                                         $daysum-=$nxt[2];
    506                                         $rasx+=$nxt[2];
    507                                         $csum_r=sprintf("%0.2f руб.",$nxt[2]);
    508                                 }
    509                                 if($nxt[8])     $sadd="<br><i>к $nxt[9] N$nxt[10]$nxt[11] от ".date("d-m-Y H:i:s",$nxt[12])." на сумму ".sprintf("%0.2f руб",$nxt[13])."</i>";
    510                                 else            $sadd='';
    511                                 if($nxt[1]==4)          $sadd.="<br>от $nxt[7]";
    512                                 else if($nxt[1]==5)     $sadd.="<br>для $nxt[7]";
    513 
    514                                 $dt=date("H:i:s",$nxt[3]);
    515                                 $sum_p=sprintf("%0.2f руб.",$sum);
    516                                
    517                                 $tmpl->AddText("<tr><td>$nxt[0]<td>$dt<td>$nxt[6] N$nxt[4]$nxt[5]   $sadd<td align='right'>$csum_p<td align='right'>$csum_r<td align='right'>$sum_p</tr>");     
    518                         }
    519                 }
    520                 if( !$flag && $lastdate<=$dayend)
    521                 {
    522                                 $sum_p=sprintf("%0.2f руб.",$sum);
    523                                 $tmpl->AddText("<tr><td colspan=5><b>На начало дня</b><td align='right'><b>$sum_p</b>");
    524                 }
    525                 if($flag)
    526                 {
    527                         $dsum_p=sprintf("%0.2f руб.",$daysum);
    528                         $psum_p=sprintf("%0.2f руб.",$prix);
    529                         $rsum_p=sprintf("%0.2f руб.",$rasx);
    530                         $tmpl->AddText("<tr><td>-<td>-<td><b>На конец дня</b><td align='right'><b>$psum_p</b><td align='right'><b>$rsum_p</b><td align='right'><b>$sum_p</b>");
    531                         $tmpl->AddText("<tr><td>-<td>-<td><b>Разница за смену</b><td align='right' colspan=3><b>$dsum_p</b>");
    532                 }
    533                 else    $tmpl->AddText("<tr><td>-<td>-<td><b>Нет данных по балансу на выбранную дату</b><td align='right'><b>нет данных</b><td align='right'><b>нет данных</b><td align='right'><b>нет данных</b>");
    534                
    535                 $res=mysql_query("SELECT `name` FROM `users` WHERE `id`='{$_SESSION['uid']}'");
    536                 $nm=mysql_result($res,0,0);
    537                
    538                 $tmpl->AddText("</table><br><br>
    539                 Cоответствие сумм подтверждаю ___________________ (банкир $nm)");
    540         }
    541        
    542         function Run($opt)
    543         {
    544                 if($opt=='')    $this->Form();
    545                 else            $this->MakeHTML();     
    546         }
    547 };
    548 
    549 class Report_Dolgi
    550 {
    551         function Form()
    552         {
    553                 global $tmpl;
    554                 $curdate=date("Y-m-d");
    555                 $tmpl->AddText("<h1>Отчёт по долгам</h1>
    556                 <form action=''>
    557                 <input type='hidden' name='mode' value='dolgi'>
    558                 <input type='hidden' name='opt' value='ok'>
    559                 Организация:<br>
    560                 <select name='firm_id'>
    561                 <option value='0'>--все--</option>");
    562                 $res=mysql_query("SELECT `id`, `firm_name` FROM `doc_vars` ORDER BY `id`");
    563                 while($nxt=mysql_fetch_row($res))
    564                 {
    565                         $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>");
    566                 }
    567                 $tmpl->AddText("</select><br>
    568                 Группа агентов:<br>
    569                 <select name='agroup'>
    570                 <option value='0'>--все--</option>");
    571                 $res=mysql_query("SELECT `id`, `name` FROM `doc_agent_group` ORDER BY `name`");
    572                 while($nxt=mysql_fetch_row($res))
    573                 {
    574                         $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>");
    575                 }
    576                 $tmpl->AddText("</select><br>
    577                 <fieldset><legend>Вид задолженности</legend>
    578                 <label><input type='radio' name='vdolga' value='1' checked>Нам должны</label><br>
    579                 <label><input type='radio' name='vdolga' value='2'>Мы должны</label>
    580                 </fieldset>
    581                 <button type='submit'>Сформировать</button></form>");
    582         }
    583        
    584         function MakeHTML($vdolga)
    585         {
    586                 global $tmpl;
    587                 $vdolga=rcv('vdolga');
    588                 $agroup=rcv('agroup');
    589                 $firm_id=rcv('firm_id');
    590                 $tmpl->LoadTemplate('print');
    591                 if($vdolga==2) $tmpl->SetText("<h1>Мы должны (от ".date('d.m.Y').")</h1>");
    592                 else $tmpl->SetText("<h1>Долги партнёров (от ".date('d.m.Y').")</h1>");
    593                 $tmpl->AddText("<table width=100%><tr><th>N<th>Агент - партнер<th>Дата сверки<th>Сумма");
    594                 $sql_add=$agroup?"WHERE `group`='$agroup'":'';
    595                 $res=mysql_query("SELECT `id`, `name`, `data_sverki` FROM `doc_agent` $sql_add ORDER BY `name`");
    596                 $i=0;
    597                 $sum_dolga=0;
    598                 while($nxt=mysql_fetch_row($res))
    599                 {
    600                         $dolg=DocCalcDolg($nxt[0],0,$firm_id);
    601                         if( (($dolg>0)&&($vdolga==1))|| (($dolg<0)&&($vdolga==2)) )
    602                         {
    603                                 $i++;
    604                                 $dolg=abs($dolg);
    605                                 $sum_dolga+=$dolg;
    606                                 $dolg=sprintf("%0.2f",$dolg);
    607                                 $tmpl->AddText("<tr><td>$i<td>$nxt[1]<td>$nxt[2]<td align='right'>$dolg руб.");
    608                                
    609                         }
    610                 }
    611                 $tmpl->AddText("</table>
    612                 <p>Итого: $i должников с общей суммой долга $sum_dolga  руб.<br> (".num2str($sum_dolga).")</p>");
    613         }
    614        
    615         function Run($opt)
    616         {
    617                 if($opt=='')    $this->Form();
    618                 else            $this->MakeHTML();     
    619         }
    620 };
     176
    621177
    622178
     
    657213        $opt=rcv('opt');
    658214
    659 $otchet=new Report_OstatkiNaDatu();     // Ext
     215        $otchet=new Report_OstatkiNaDatu();     // Ext
    660216        $otchet->Run($opt);
    661217}
  • web/doc_sc.php

    rc214e53 r45f0349  
    2525SafeLoadTemplate($CONFIG['site']['inner_skin']);
    2626
    27 $GLOBALS['m_left']=0;
     27$tmpl->HideBlock('left');
    2828$mode=rcv('mode');
    2929$doc=rcv("doc");
  • web/include/doc.core.php

    rc214e53 r45f0349  
    373373        <div id='doc_menu_container'>
    374374        <div id='doc_menu_r'>
    375         <a href='/users.php' title='Возможности пользователя'><img src='/img/i_users.png' alt='Возможности пользователя' border='0'></a>
     375        <a href='/user.php' title='Возможности пользователя'><img src='/img/i_users.png' alt='Возможности пользователя' border='0'></a>
    376376        <a href='/login.php?mode=logout' title='Выход'><img src='/img/i_logout.png' alt='Выход'></a>
    377377        </div>
  • web/include/reports/ostatkinadatu.php

    rc214e53 r45f0349  
    2121class Report_OstatkiNaDatu
    2222{
     23        function draw_groups_tree($level)
     24        {
     25                $ret='';
     26                $res=mysql_query("SELECT `id`, `name`, `desc` FROM `doc_group` WHERE `pid`='$level' AND `hidelevel`='0' ORDER BY `name`");
     27                $i=0;
     28                $r='';
     29                if($level==0) $r='IsRoot';
     30                $cnt=mysql_num_rows($res);
     31                while($nxt=mysql_fetch_row($res))
     32                {
     33                        if($nxt[0]==0) continue;
     34                        $item="<label><input type='checkbox' name='g[]' value='$nxt[0]' id='cb$nxt[0]' class='cb' checked onclick='CheckCheck($nxt[0])'>$nxt[1]</label>";
     35                        if($i>=($cnt-1)) $r.=" IsLast";
     36                        $tmp=$this->draw_groups_tree($nxt[0]); // рекурсия
     37                        if($tmp)
     38                                $ret.="<li class='Node ExpandLeaf $r'><div class='Expand'></div><div class='Content'>$item</div><ul class='Container' id='cont$nxt[0]'>".$tmp.'</ul></li>';
     39                        else
     40                                $ret.="<li class='Node ExpandLeaf $r'><div class='Expand'></div><div class='Content'>$item</div></li>";
     41                        $i++;
     42                }
     43                return $ret;
     44        }
     45
     46
     47        function GroupSelBlock()
     48        {
     49                global $tmpl;
     50                $tmpl->AddStyle(".scroll_block
     51                {
     52                        max-height:             250px;
     53                        overflow:               auto;   
     54                }
     55               
     56                div#sb
     57                {
     58                        display:                none;
     59                        border:                 1px solid #888;
     60                }
     61               
     62                .selmenu
     63                {
     64                        background-color:       #888;
     65                        width:                  auto;
     66                        font-weight:            bold;
     67                        padding-left:           20px;
     68                }
     69               
     70                .selmenu a
     71                {
     72                        color:                  #fff;
     73                        cursor:                 pointer;       
     74                }
     75               
     76                .cb
     77                {
     78                        width:                  14px;
     79                        height:                 14px;
     80                        border:                 1px solid #ccc;
     81                }
     82               
     83                ");
     84                $tmpl->AddText("<script type='text/javascript'>
     85                function gstoggle()
     86                {
     87                        var gs=document.getElementById('cgs').checked;
     88                        if(gs==true)
     89                                document.getElementById('sb').style.display='block';
     90                        else    document.getElementById('sb').style.display='none';
     91                }
     92               
     93                function SelAll(flag)
     94                {
     95                        var elems = document.getElementsByName('g[]');
     96                        var l = elems.length;
     97                        for(var i=0; i<l; i++)
     98                        {
     99                                elems[i].checked=flag;
     100                                if(flag)        elems[i].disabled = false;
     101                        }
     102                }
     103               
     104                function CheckCheck(ids)
     105                {
     106                        var cb = document.getElementById('cb'+ids);
     107                        var cont=document.getElementById('cont'+ids);
     108                        if(!cont)       return;
     109                        var elems=cont.getElementsByTagName('input');
     110                        var l = elems.length;
     111                        for(var i=0; i<l; i++)
     112                        {
     113                                if(!cb.checked)         elems[i].checked=false;
     114                                elems[i].disabled =! cb.checked;
     115                        }
     116                }
     117               
     118                </script>
     119                <label><input type=checkbox name='gs' id='cgs' value='1' onclick='gstoggle()'>Выбрать группы</label><br>
     120                <div class='scroll_block' id='sb'>
     121                <ul class='Container'>
     122                <div class='selmenu'><a onclick='SelAll(true)'>Выбрать всё<a> | <a onclick='SelAll(false)'>Снять всё</a></div>
     123                ".$this->draw_groups_tree(0)."</ul></div>");
     124        }
     125       
     126       
    23127        function getName($short=0)
    24128        {
     
    45149                $tmpl->AddText("</select>
    46150                Группа товаров:<br>");
    47                 GroupSelBlock();
     151                $this->GroupSelBlock();
    48152                $tmpl->AddText("<button type='submit'>Создать отчет</button></form>"); 
    49153        }
     
    104208};
    105209
    106 $active_report=new Report_OstatkiNaDatu();
    107210?>
    108211
Note: See TracChangeset for help on using the changeset viewer.