Changeset 90ef7fb
- Timestamp:
- Jan 26, 2012, 9:22:08 PM (11 years ago)
- Branches:
- master
- Children:
- 2bc65db
- Parents:
- 85095b7
- Location:
- web
- Files:
-
- 5 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
web/doc_otchet.php
r85095b7 r90ef7fb 31 31 return array( 32 32 'doc_otchet.php?mode=agent_bez_prodaj' => 'Агенты без продаж', 33 'doc_otchet.php?mode=sverka' => 'Акт сверки',34 'doc_otchet.php?mode=sverka_op' => 'Акт сверки (оперативный)',35 'doc_otchet.php?mode=agent_otchet' => 'Отчет по агенту',36 'doc_otchet.php?mode=proplaty' => 'Отчет по проплатам',37 33 'doc_otchet.php?mode=prod' => 'Отчёт по продажам', 38 34 'doc_otchet.php?mode=bezprodaj' => 'Отчёт по товарам без продаж', 39 35 'doc_otchet.php?mode=doc_reestr' => 'Реестр документов', 40 'doc_otchet.php?mode=fin_otchet' => 'Сводный финансовый отчёт',41 36 'doc_reports.php' => 'Новые отчёты'); 42 37 } … … 46 41 return " 47 42 <a href='doc_otchet.php?mode=bezprodaj'><div>Агенты без продаж</div></a> 48 <a href='doc_otchet.php?mode=sverka'><div>Акт сверки</div></a>49 <a href='doc_otchet.php?mode=agent_otchet'><div>Отчет по агенту</div></a>50 43 <a href='doc_otchet.php?mode=prod'><div>Отчёт по продажам</div></a> 51 <a href='doc_otchet.php?mode=proplaty'><div>Отчет по проплатам</div></a>52 44 <a href='doc_otchet.php?mode=bezprodaj'><div>Отчёт по товарам без продаж</div></a> 53 45 <a href='doc_otchet.php?mode=cost'><div>Отчёт по ценам</div></a> 54 46 <a href='doc_otchet.php?mode=doc_reestr'><div>Реестр документов</div></a> 55 <a href='doc_otchet.php?mode=fin_otchet'><div>Сводный финансовый отчёт</div></a>56 47 <hr> 57 48 <a href='doc_reports.php'><div>Новые отчёты</div></a>"; … … 183 174 $tmpl->ajax=1; 184 175 $tmpl->AddText(otch_divs()); 185 }186 else if($mode=='fin_otchet')187 {188 $tmpl->SetTitle("Сводный финансовый отчет");189 doc_menu();190 $tmpl->AddText("<h1>Сводный финансовый отчёт</h1>");191 $date_st=date("Y-m-01");192 $date_end=date("Y-m-d");193 $tmpl->AddText("194 <form method='post'>195 <input type='hidden' name='mode' value='fin_otchet_g'>196 <table width=400>197 <tr><th>198 Задание начальных условий:199 <tr><td class=lin0>200 <p class='datetime'>201 Дата от:<input type='text' id='id_pub_date_date' class='vDateField required' name='date_st' size='10' value='$date_st' maxlength='10' /><br>202 до:<input type='text' id='id_pub_date_date' class='vDateField required' name='date_end' size='10' value='$date_end' maxlength='10' />203 </p>204 <input type=submit value='Сделать отчёт!'>205 </table></form>");206 }207 else if($mode=='fin_otchet_g')208 {209 $date_st=strtotime(rcv('date_st'));210 $date_end=strtotime(rcv('date_end'))+60*60*24-1;211 if(!$date_end) $date_end=time();212 $agent=rcv('agent');213 214 $date_st_print=date("d.m.Y H:i:s",$date_st);215 $date_end_print=date("d.m.Y H:i:s",$date_end);216 217 $tmpl->LoadTemplate('print');218 219 220 $tmpl->AddText("<h1>Сводный финансовый отчёт</h1>221 <h4>С $date_st_print по $date_end_print</h4>");222 223 // Счётчики для обработки224 $rasxody_nal="";225 $rasxody_bn="";226 $podotchet=0;227 $prixody_nal=0;228 $prixody_bn=0;229 $doc_null='';230 $doc_otchet='';231 // Обработка ПРОВЕДЁННЫХ документов за указанный период232 233 $res=mysql_query("SELECT `doc_list`.`id`,`doc_list`.`type`,`doc_list`.`date`,`doc_list`.`sum`,234 `doc_list`.`altnum`235 FROM `doc_list`236 WHERE `doc_list`.`ok`!='0' AND `doc_list`.`date`>='$date_st' AND `doc_list`.`date`<='$date_end'");237 238 while($nxt=mysql_fetch_row($res))239 {240 $dopdata="";241 $rr=mysql_query("SELECT `param`,`value` FROM `doc_dopdata` WHERE `doc`='$nxt[0]'");242 while($nx=mysql_fetch_row($rr))243 {244 $dopdata["$nx[0]"]=$nx[1];245 }246 247 if($nxt[1]==4) // Банковский приход248 {249 $prixody_bn+=$nxt[3];250 }251 if($nxt[1]==5) // Банковский расход252 {253 $vid=$dopdata['rasxodi'];254 if(!$vid) $vid=0;255 $rasxody_bn[$vid]+=$nxt[3];256 if($vid==12) $podotchet+=$nxt[3];257 if($vid==0) $doc_null.="банк:$nxt[0], ";258 259 260 }261 else if($nxt[1]==6) // Кассовый приход262 {263 $prixody_nal+=$nxt[3];264 }265 else if($nxt[1]==7) // Кассовый расход266 {267 $vid=$dopdata['rasxodi'];268 if(!$vid) $vid=0;269 $rasxody_nal[$vid]+=$nxt[3];270 if($vid==12) $podotchet+=$nxt[3];271 if($vid==0) $doc_null.="касса:$nxt[0], ";272 if($vid==12) $doc_otchet.="касса:$nxt[0], ";273 }274 }275 276 $adm=0;277 $tovar=0;278 $sum_nal=0;279 $sum_bn=0;280 $sum_prixod=$prixody_bn+$prixody_nal-$podotchet;281 282 $nal_prn=sprintf("%01.2f", $prixody_nal);283 $bn_prn=sprintf("%01.2f", $prixody_bn);284 $sum_prn=sprintf("%01.2f", $sum_prixod);285 286 $pod_prn=sprintf("%01.2f",(-1)*$podotchet);287 $nalsum_prn=sprintf("%01.2f", $prixody_nal-$podotchet);288 289 290 $tmpl->AddText("291 <h4>Движения денежных средств</h4>292 <table class=right_align>293 <tr><th>N<th>Вид<th>Наличные средства<th>Безналичные средства<th>Сумма294 <tr><th colspan=5>Поступления295 <tr><td>1<td id=lf>Поступления на р/счёт<td>0.00<td>$bn_prn<td>$bn_prn296 <tr><td>2<td id=lf>Поступления в кассу<td>$nal_prn<td>$pod_prn<td>$nalsum_prn297 <tr><th colspan=2>Получено:<th>$nal_prn<th>$bn_prn<th>$sum_prn298 <tr><th colspan=5>Затраты");299 $res=mysql_query("SELECT * FROM `doc_rasxodi`");300 while($nxt=mysql_fetch_row($res))301 {302 $nal=$rasxody_nal[$nxt[0]];303 $bn=$rasxody_bn[$nxt[0]];304 $cur_sum=$nal+$bn;305 306 $nal_prn=sprintf("%01.2f", $nal);307 $bn_prn=sprintf("%01.2f", $bn);308 $cur_sum_prn=sprintf("%01.2f", $cur_sum);309 $tmpl->AddText("<tr><td>$nxt[0]<td id=lf>$nxt[1]<td>$nal_prn<td>$bn_prn<td>$cur_sum_prn");310 // Суммирование311 $sum_nal+=$nal;312 $sum_bn+=$bn;313 if($nxt[2]) $adm+=$cur_sum;314 else $tovar+=$cur_sum;315 }316 317 $nal_prn=sprintf("%01.2f", $sum_nal);318 $bn_prn=sprintf("%01.2f", $sum_bn);319 $sum_prn=sprintf("%01.2f", $sum_nal+$sum_bn-$rasxody_bn[12]);320 $adm_prn=sprintf("%01.2f", $adm);321 $tovar_prn=sprintf("%01.2f", $sum_nal+$sum_bn-$adm-$rasxody_bn[12]);322 323 if($sum_prixod==0) $adm_proc_prn="бесконечность";324 else $adm_proc_prn=sprintf("%01.4f", ($adm/$sum_prixod*100));325 326 327 $tmpl->AddText("328 <tr><th colspan=2>Итого:<th>$nal_prn<th>$bn_prn<th>$sum_prn329 <tr><th colspan=4>Административные затраты:<th>$adm_prn330 <tr><th colspan=4>В процентах от прихода:<th>$adm_proc_prn331 <tr><th colspan=4>За товар:<th>$tovar_prn332 <tr><th colspan=4>Итого:<th>$sum_prn333 </table>334 Расходники со статусом *другие расходы*: $doc_null, под отчет: $doc_otchet");335 }336 else if($mode=='proplaty')337 {338 $tmpl->SetTitle("Отчёт по проплатам за период");339 doc_menu();340 $dat=date("Y-m-d");341 $tmpl->AddText("<h1>Отчёт по проплатам за период</h1>342 <form method='post'>343 <input type=hidden name=mode value='proplaty_g'>344 <table width=400>345 <tr><th>346 Задание начальных условий:347 <tr><td class=lin0>348 <p class='datetime'>349 Дата от:<input type='text' id='id_pub_date_date' class='vDateField required' name='date_st' size='10' value='1970-01-01' maxlength='10' /><br>350 до:<input type='text' id='id_pub_date_date' class='vDateField required' name='date_end' size='10' value='$dat' maxlength='10' />351 </p>352 <label><input type=checkbox name=tov value=1>Товары в документах</label><br>353 <input type=submit value='Сделать отчет!'>354 </table>355 </form>");356 }357 else if($mode=='proplaty_g')358 {359 $tov=rcv("tov");360 $agent=rcv('agent');361 $date_st=strtotime(rcv('date_st'));362 $date_end=strtotime(rcv('date_end'))+60*60*24-1;363 if(!$date_end) $date_end=time();364 $tmpl->LoadTemplate('print');365 366 $tmpl->AddText("<h1>Отчет по проплатам</h1>367 c ".date("d.m.Y",$date_st)." по ".date("d.m.Y",$date_end));368 369 $res=mysql_query("SELECT `doc_list`.`id`,`doc_list`.`type`,`doc_list`.`date`,`doc_list`.`sum`,370 `doc_list`.`altnum`, `doc_agent`.`name`371 FROM `doc_list`372 LEFT JOIN `doc_agent` ON `doc_agent`.`id`=`doc_list`.`agent`373 WHERE `doc_list`.`ok`!='0' AND `doc_list`.`date`>='$date_st' AND `doc_list`.`date`<='$date_end'");374 375 $tmpl->AddText("<table width=100%>376 <tr><th width=30%>N док-та, дата, партнер<th>Операция<th>Дебет<th>Кредит");377 $pr=$ras=0;378 while($nxt=mysql_fetch_row($res))379 {380 $deb=$kr="";381 382 if($nxt[1]==1)383 {384 $tp="Поступление";385 $pr+=$nxt[3];386 $deb=$nxt[3];387 }388 else if($nxt[1]==2)389 {390 $tp="Реализация";391 $ras+=$nxt[3];392 $kr=$nxt[3];393 }394 if($nxt[1]==3)395 {396 $tp="-";397 continue;398 }399 if($nxt[1]==4)400 {401 $tp="Оплата";402 $pr+=$nxt[3];403 $deb=$nxt[3];404 }405 if($nxt[1]==5)406 {407 $tp="Возврат";408 $ras+=$nxt[3];409 $kr=$nxt[3];410 }411 if($nxt[1]==6)412 {413 $tp="Оплата";414 $pr+=$nxt[3];415 $deb=$nxt[3];416 }417 if($nxt[1]==7)418 {419 $tp="Возврат";420 $ras+=$nxt[3];421 $kr=$nxt[3];422 }423 424 if($tov)425 {426 $rs=mysql_query("SELECT `doc_base`.`name`,`doc_list_pos`.`cnt`,`doc_list_pos`.`cost` FROM `doc_list_pos`427 LEFT JOIN `doc_base` ON `doc_base`.`id`=`doc_list_pos`.`tovar`428 WHERE `doc_list_pos`.`doc`='$nxt[0]'");429 if(mysql_num_rows($rs))430 {431 $tp="<b>$tp</b><table width=100%><tr><th>Товар<th width=20%>Кол-во<th width=20%>Цена";432 while($nx=mysql_fetch_row($rs))433 $tp.="<tr><td>$nx[0]<td>$nx[1] шт.<td>$nx[2] руб.";434 $tp.="</table>";435 }436 }437 if($deb) $deb=sprintf("%01.2f", $deb);438 if($kr) $kr=sprintf("%01.2f", $kr);439 $dt=date("d.m.Y",$nxt[2]);440 $tmpl->AddText("<tr>441 <td>$nxt[4] ($nxt[0])<br>$dt<br>$nxt[5]<td>$tp<td>$deb<td>$kr");442 }443 444 $razn=sprintf("%01.2f", $pr-$ras);445 $pr=sprintf("%01.2f", $pr);446 $ras=sprintf("%01.2f", $ras);447 448 $tmpl->AddText("<tr><td>-<td>Обороты за период<td>$pr<td>$ras449 <tr><td colspan=4>");450 if($razn>0)451 $tmpl->AddText("переплата ".$dv['firm_name']."$razn руб.");452 else $tmpl->AddText("задолженность ".$dv['firm_name']." $razn руб.");453 454 $tmpl->AddText("<tr><td colspan=4>".$dv['firm_name']."<br>455 директор<br>____________________________ (".$dv['firm_director'].")<br><br>м.п.<br>456 </table>");457 }458 else if($mode=='sverka')459 {460 global $CONFIG;461 $opt=rcv('opt');462 if($opt=='')463 {464 doc_menu();465 $tmpl->SetTitle("Акт сверки");466 $dat=date("Y-m-d");467 $tmpl->AddText("468 <script src='/css/jquery/jquery.js' type='text/javascript'></script>469 <script src='/css/jquery/jquery.alerts.js' type='text/javascript'></script>470 <link href='/css/jquery/jquery.alerts.css' rel='stylesheet' type='text/css' media='screen' />471 <script type='text/javascript' src='/css/jquery/jquery.autocomplete.js'></script>472 <link rel='stylesheet' href='/css/jquery/ui/themes/base/jquery.ui.all.css'>473 <script src='/css/jquery/ui/jquery.ui.core.js'></script>474 <script src='/css/jquery/ui/jquery.ui.widget.js'></script>475 <script src='/css/jquery/ui/jquery.ui.datepicker.js'></script>476 <script src='/css/jquery/ui/i18n/jquery.ui.datepicker-ru.js'></script>477 <h1><b>Акт сверки</b></h1>478 <form action='' method='post'>479 <input type='hidden' name='mode' value='sverka'>480 Агент-партнёр:<br>481 <input type='hidden' name='agent_id' id='agent_id' value=''>482 <input type='text' id='ag' name='agent_name' style='width: 400px;' value=''><br>483 <p class='datetime'>484 Дата от:<br><input type='text' id='datepicker_f' name='date_st' value='1970-01-01' maxlength='10' /><br>485 Дата до:<br><input type='text' id='datepicker_t' name='date_end' value='$dat' maxlength='10' /></p><br>486 Организация:<br><select name='firm_id'>487 <option value='0'>--- Любая ---</option>");488 $rs=mysql_query("SELECT `id`, `firm_name` FROM `doc_vars` ORDER BY `firm_name`");489 while($nx=mysql_fetch_row($rs))490 {491 if($CONFIG['site']['default_firm']==$nx[0]) $s=' selected'; else $s='';492 $tmpl->AddText("<option value='$nx[0]' $s>$nx[1]</option>");493 }494 $tmpl->AddText("</select><br>495 Подтип документа (оставьте пустым, если учитывать не требуется):<br>496 <input type='text' name='subtype'><br>497 <label><input type='radio' name='opt' value='html'>Выводить в виде HTML</label><br>498 <label><input type='radio' name='opt' value='pdf' checked>Выводить в виде PDF</label><br>499 <input type=submit value='Сделать сверку!'>500 </form>501 502 <script type='text/javascript'>503 504 function DtCheck(t)505 {506 var dn=new Array();507 $doc_names508 var popup=document.getElementById('doc_sel_popup');509 var list=popup.getElementsByTagName('input');510 var str='';511 for(var i=0; i<list.length; i++)512 {513 if(list[i].checked)514 str+=dn[list[i].value]+'; ';515 }516 document.getElementById('doc_sel').innerHTML=str;517 }518 519 $(document).ready(function(){520 $(\"#ag\").autocomplete(\"/docs.php\", {521 delay:300,522 minChars:1,523 matchSubset:1,524 autoFill:false,525 selectFirst:true,526 matchContains:1,527 cacheLength:10,528 maxItemsToShow:15,529 formatItem:agliFormat,530 onItemSelect:agselectItem,531 extraParams:{'l':'agent','mode':'srv','opt':'ac'}532 });533 $.datepicker.setDefaults( $.datepicker.regional[ 'ru' ] );534 535 $( '#datepicker_f' ).datepicker({showButtonPanel: true });536 $( '#datepicker_f' ).datepicker( 'option', 'dateFormat', 'yy-mm-dd' );537 $( '#datepicker_f' ).datepicker( 'setDate' , '1970-01-01' );538 $( '#datepicker_t' ).datepicker({showButtonPanel: true });539 $( '#datepicker_t' ).datepicker( 'option', 'dateFormat', 'yy-mm-dd' );540 $( '#datepicker_t' ).datepicker( 'setDate' , '$dat' );541 });542 function agliFormat (row, i, num) {543 var result = row[0] + \"<em class='qnt'>тел. \" +544 row[2] + \"</em> \";545 return result;546 }547 function agselectItem(li) {548 if( li == null ) var sValue = \"Ничего не выбрано!\";549 if( !!li.extra ) var sValue = li.extra[0];550 else var sValue = li.selectValue;551 document.getElementById('agent_id').value=sValue;552 }553 554 </script>");555 }556 else if($opt=='html')557 {558 $firm_id=rcv('firm_id');559 $subtype=rcv('subtype');560 561 $date_st=strtotime(rcv('date_st'));562 $date_end=strtotime(rcv('date_end'))+60*60*24-1;563 $ag=rcv('agent_id');564 565 if($firm_id)566 {567 $res=mysql_query("SELECT * FROM `doc_vars` WHERE `id`='$firm_id'");568 $dv=mysql_fetch_assoc($res);569 }570 if(!$date_end) $date_end=time();571 $tmpl->LoadTemplate('print');572 573 $res=mysql_query("SELECT `id`, `fullname`, `dir_fio` FROM `doc_agent` WHERE `id`='$ag'");574 if(mysql_errno()) throw new MysqlException("Не удалось получить данные агента");575 if(mysql_num_rows($res)==0) throw new Exception("Не указан агент!");576 list($agent, $fn, $dir_fio)=mysql_fetch_row($res);577 578 $tmpl->SetText("<center>Акт сверки<br>579 взаимных расчетов<br>".$dv['firm_name']."<br>580 c ".date("d.m.Y",$date_st)." по ".date("d.m.Y",$date_end)."581 $fn</center>582 Мы, нижеподписавшиеся, директор ".$dv['firm_name']." ".$dv['firm_director']."583 c одной стороны, и директор $fn $dir_fio с другой стороны,584 составили настоящий акт сверки в том, что состояние взаимных расчетов по585 данным учёта следующее:<br><br>");586 587 $sql_add='';588 if($firm_id>0) $sql_add.=" AND `doc_list`.`firm_id`='$firm_id'";589 if($subtype!='') $sql_add.=" AND `doc_list`.`subtype`='$subtype'";590 591 $res=mysql_query("SELECT `doc_list`.`id`,`doc_list`.`type`,`doc_list`.`date`,`doc_list`.`sum`,592 `doc_list`.`altnum`, `doc_types`.`name`593 FROM `doc_list`594 LEFT JOIN `doc_types` ON `doc_types`.`id`=`doc_list`.`type`595 WHERE `doc_list`.`agent`='$agent' AND `doc_list`.`ok`!='0' AND `doc_list`.`date`<='$date_end' ".$sql_add." ORDER BY `doc_list`.`date`" );596 597 $tmpl->AddText("<table width=100%>598 <tr>599 <td colspan=4 width='50%'>по данным ".$dv['firm_name']."600 <td colspan=4 width='50%'>по данным $fn601 <tr>602 <th>Дата<th>Операция<th>Дебет<th>Кредит603 <th>Дата<th>Операция<th>Дебет<th>Кредит");604 $pr=$ras=0;605 $f_print=false;606 while($nxt=mysql_fetch_row($res))607 {608 $deb=$kr="";609 610 if( ($nxt[2]>=$date_st) && (!$f_print) )611 {612 $f_print=true;613 if($pr>$ras)614 {615 $pr-=$ras;616 $ras='';617 }618 else if($pr<$ras)619 {620 $ras-=$pr;621 $pr='';622 }623 else $pr=$ras='';624 if($pr) $pr=sprintf("%01.2f", $pr);625 if($ras)$ras=sprintf("%01.2f", $ras);626 $tmpl->AddText("<tr><td colspan=2>Сальдо на начало периода<td>$ras<td>$pr<td><td><td><td>");627 }628 629 if($nxt[1]==1)630 {631 $pr+=$nxt[3];632 $kr=$nxt[3];633 }634 else if($nxt[1]==2)635 {636 $ras+=$nxt[3];637 $deb=$nxt[3];638 }639 if( ($nxt[1]==3) || ($nxt[1]==12))640 {641 continue;642 }643 if($nxt[1]==4)644 {645 $pr+=$nxt[3];646 $kr=$nxt[3];647 }648 if($nxt[1]==5)649 {650 $ras+=$nxt[3];651 $deb=$nxt[3];652 }653 if($nxt[1]==6)654 {655 $pr+=$nxt[3];656 $kr=$nxt[3];657 }658 if($nxt[1]==7)659 {660 $ras+=$nxt[3];661 $deb=$nxt[3];662 }663 if($nxt[1]==18)664 {665 $pr+=$nxt[3];666 $kr=$nxt[3];667 }668 669 if($f_print)670 {671 if(!$nxt[4]) $nxt[4]=$nxt[0];672 if($deb) $deb=sprintf("%01.2f", $deb);673 if($kr) $kr=sprintf("%01.2f", $kr);674 $dt=date("d.m.Y",$nxt[2]);675 $tmpl->AddText("<tr><td>$dt<td>$nxt[5] N$nxt[4]<td>$deb<td>$kr<td><td><td><td>");676 }677 }678 679 $razn=$pr-$ras;680 $razn_p=abs($razn);681 $razn_p=sprintf("%01.2f", $razn_p);682 683 $pr=sprintf("%01.2f", $pr);684 $ras=sprintf("%01.2f", $ras);685 686 $tmpl->AddText("<tr><td colspan=2>Обороты за период<td>$ras<td>$pr<td><td><td><td>");687 if($pr>$ras)688 {689 $pr-=$ras;690 $ras='';691 }692 else if($pr<$ras)693 {694 $ras-=$pr;695 $pr='';696 }697 else $pr=$ras='';698 if($pr) $pr=sprintf("%01.2f", $pr);699 if($ras)$ras=sprintf("%01.2f", $ras);700 701 $tmpl->AddText("<tr><td colspan=2>Сальдо на конец периода<td>$ras<td>$pr<td colspan=4>702 <tr><td colspan=4>");703 if($razn>0) $tmpl->AddText("переплата в пользу ".$dv['firm_name']." $razn_p руб.");704 else if($razn<0) $tmpl->AddText("задолженность в пользу ".$dv['firm_name']." $razn_p руб.");705 else $tmpl->AddText("$razn переплат и задолженностей нет!");706 707 $tmpl->AddText("<td colspan=4>708 <tr><td colspan=4>От ".$dv['firm_name']."<br>709 директор<br>____________________________ (".$dv['firm_director'].")<br><br>м.п.<br>710 <td colspan=4>От $fn<br>711 директор<br> ____________________________ ($dir_fio)<br><br>м.п.<br>712 </table>");713 }714 else if($opt=='pdf')715 {716 $firm_id=rcv('firm_id');717 $subtype=rcv('subtype');718 $date_st=strtotime(rcv('date_st'));719 $date_end=strtotime(rcv('date_end'))+60*60*24-1;720 $agent_id=rcv('agent_id');721 722 if($firm_id)723 {724 $res=mysql_query("SELECT * FROM `doc_vars` WHERE `id`='$firm_id'");725 if(mysql_errno()) throw new Exception("Не удалось выбрать данные фирмы");726 $firm_vars=mysql_fetch_assoc($res);727 }728 if(!$date_end) $date_end=time();729 730 $res=mysql_query("SELECT `id`, `fullname`, `dir_fio` FROM `doc_agent` WHERE `id`='$agent_id'");731 if(mysql_errno()) throw new MysqlException("Не удалось получить данные агента");732 if(mysql_num_rows($res)==0) throw new Exception("Не указан агент $agent_id!");733 list($agent, $fn, $dir_fio)=mysql_fetch_row($res);734 735 $firm_vars['firm_name']=unhtmlentities($firm_vars['firm_name']);736 $agent['fullname']=unhtmlentities($agent['fullname']);737 738 define('FPDF_FONT_PATH',$CONFIG['site']['location'].'/fpdf/font/');739 require('fpdf/fpdf.php');740 $pdf=new FPDF('P');741 $pdf->Open();742 $pdf->SetAutoPageBreak(1,12);743 $pdf->AddFont('Arial','','arial.php');744 $pdf->tMargin=10;745 $pdf->AddPage('P');746 747 $pdf->SetFont('Arial','',16);748 $str = iconv('UTF-8', 'windows-1251', "Акт сверки взаимных расчетов");749 $pdf->Cell(0,6,$str,0,1,'C',0);750 751 $str="от {$firm_vars['firm_name']}\nза период с ".date("d.m.Y",$date_st)." по ".date("d.m.Y",$date_end);752 $pdf->SetFont('Arial','',10);753 $str = iconv('UTF-8', 'windows-1251', $str);754 $pdf->MultiCell(0,4,$str,0,'C',0);755 $pdf->Ln(2);756 $str="Мы, нижеподписавшиеся, директор {$firm_vars['firm_name']} {$firm_vars['firm_director']} c одной стороны, и директор $fn $dir_fio, с другой стороны, составили настоящий акт сверки о том, что состояние взаимных расчетов по данным учёта следующее:";757 $str = iconv('UTF-8', 'windows-1251', $str);758 $pdf->Write(5,$str,'');759 760 $pdf->Ln(8);761 $y=$pdf->GetY();762 $base_x=$pdf->GetX();763 $pdf->SetLineWidth(0.5);764 $t_width=array(17,44,17,17,17,44,17,0);765 $t_text=array('Дата', 'Операция', 'Дебет', 'Кредит', 'Дата', 'Операция', 'Дебет', 'Кредит');766 767 $h_width=$t_width[0]+$t_width[1]+$t_width[2]+$t_width[3];768 $str1=iconv('UTF-8', 'windows-1251', "По данным {$firm_vars['firm_name']}");769 $str2=iconv('UTF-8', 'windows-1251', "По данным $fn");770 771 $pdf->MultiCell($h_width,5,$str1,0,'L',0);772 $max_h=$pdf->GetY()-$y;773 $pdf->SetY($y);774 $pdf->SetX($base_x+$h_width);775 $pdf->MultiCell(0,5,$str2,0,'L',0);776 if( ($pdf->GetY()-$y) > $max_h) $max_h=$pdf->GetY()-$y;777 //$pdf->Cell(0,5,$str2,1,0,'L',0);778 $pdf->SetY($y);779 $pdf->SetX($base_x);780 $pdf->Cell($h_width,$max_h,'',1,0,'L',0);781 $pdf->Cell(0,$max_h,'',1,0,'L',0);782 $pdf->Ln();783 foreach($t_width as $i => $w)784 {785 $str = iconv('UTF-8', 'windows-1251', $t_text[$i]);786 $pdf->Cell($w,5,$str,1,0,'C',0);787 }788 $pdf->SetLineWidth(0.2);789 $pdf->Ln();790 $pdf->SetFont('','',8);791 $pr=$ras=0;792 $f_print=false;793 794 $sql_add='';795 if($firm_id>0) $sql_add.=" AND `doc_list`.`firm_id`='$firm_id'";796 if($subtype!='') $sql_add.=" AND `doc_list`.`subtype`='$subtype'";797 798 $res=mysql_query("SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`date`, `doc_list`.`sum`,799 `doc_list`.`altnum`, `doc_types`.`name`800 FROM `doc_list`801 LEFT JOIN `doc_types` ON `doc_types`.`id`=`doc_list`.`type`802 WHERE `doc_list`.`agent`='$agent' AND `doc_list`.`ok`!='0' AND `doc_list`.`date`<='$date_end' AND `doc_list`.`type`!='3' ".$sql_add." ORDER BY `doc_list`.`date`" );803 while($nxt=mysql_fetch_array($res))804 {805 $deb=$kr="";806 if( ($nxt[2]>=$date_st) && (!$f_print) )807 {808 $f_print=true;809 if($pr>$ras)810 {811 $pr-=$ras;812 $ras='';813 }814 else if($pr<$ras)815 {816 $ras-=$pr;817 $pr='';818 }819 else $pr=$ras='';820 if($pr) $pr=sprintf("%01.2f", $pr);821 if($ras)$ras=sprintf("%01.2f", $ras);822 823 $str=iconv('UTF-8', 'windows-1251', "Сальдо на начало периода");824 $pdf->Cell($t_width[0]+$t_width[1],4,$str,1,0,'L',0);825 $pdf->Cell($t_width[2],4,$ras,1,0,'R',0);826 $pdf->Cell($t_width[3],4,$pr,1,0,'R',0);827 $pdf->Cell($t_width[4]+$t_width[5],4,'',1,0,'L',0);828 $pdf->Cell($t_width[6],4,'',1,0,'L',0);829 $pdf->Cell($t_width[7],4,'',1,0,'L',0);830 $pdf->Ln();831 }832 833 if($nxt[1]==1)834 {835 $pr+=$nxt[3];836 $kr=$nxt[3];837 }838 else if($nxt[1]==2)839 {840 $ras+=$nxt[3];841 $deb=$nxt[3];842 }843 if( ($nxt[1]==3) || ($nxt[1]==12))844 {845 continue;846 }847 if($nxt[1]==4)848 {849 $pr+=$nxt[3];850 $kr=$nxt[3];851 }852 if($nxt[1]==5)853 {854 $ras+=$nxt[3];855 $deb=$nxt[3];856 }857 if($nxt[1]==6)858 {859 $pr+=$nxt[3];860 $kr=$nxt[3];861 }862 if($nxt[1]==7)863 {864 $ras+=$nxt[3];865 $deb=$nxt[3];866 }867 868 if($nxt[1]==18)869 {870 if($nxt[3]>0)871 {872 $ras+=$nxt[3];873 $deb=$nxt[3];874 }875 else876 {877 $pr+=abs($nxt[3]);878 $kr=abs($nxt[3]);879 }880 }881 882 if($f_print)883 {884 if(!$nxt[4]) $nxt[4]=$nxt[0];885 if($deb) $deb=sprintf("%01.2f", $deb);886 if($kr) $kr=sprintf("%01.2f", $kr);887 $dt=date("d.m.Y",$nxt[2]);888 $str=iconv('UTF-8', 'windows-1251', "$nxt[5] N$nxt[4]");889 $pdf->Cell($t_width[0],4,$dt,1,0,'L',0);890 $pdf->Cell($t_width[1],4,$str,1,0,'L',0);891 $pdf->Cell($t_width[2],4,$deb,1,0,'R',0);892 $pdf->Cell($t_width[3],4,$kr,1,0,'R',0);893 $pdf->Cell($t_width[4],4,'',1,0,'L',0);894 $pdf->Cell($t_width[5],4,'',1,0,'L',0);895 $pdf->Cell($t_width[6],4,'',1,0,'L',0);896 $pdf->Cell($t_width[7],4,'',1,0,'L',0);897 $pdf->Ln();898 }899 }900 901 $razn=$pr-$ras;902 $razn_p=abs($razn);903 $razn_p=sprintf("%01.2f", $razn_p);904 905 $pr=sprintf("%01.2f", $pr);906 $ras=sprintf("%01.2f", $ras);907 908 $str=iconv('UTF-8', 'windows-1251', "Обороты за период");909 $pdf->Cell($t_width[0]+$t_width[1],4,$str,1,0,'L',0);910 $pdf->Cell($t_width[2],4,$ras,1,0,'R',0);911 $pdf->Cell($t_width[3],4,$pr,1,0,'R',0);912 $pdf->Cell($t_width[4]+$t_width[5],4,'',1,0,'L',0);913 $pdf->Cell($t_width[6],4,'',1,0,'L',0);914 $pdf->Cell($t_width[7],4,'',1,0,'L',0);915 $pdf->Ln();916 917 if($pr>$ras)918 {919 $pr-=$ras;920 $ras='';921 }922 else if($pr<$ras)923 {924 $ras-=$pr;925 $pr='';926 }927 else $pr=$ras='';928 if($pr) $pr=sprintf("%01.2f", $pr);929 if($ras)$ras=sprintf("%01.2f", $ras);930 931 $str=iconv('UTF-8', 'windows-1251', "Сальдо на конец периода");932 $pdf->Cell($t_width[0]+$t_width[1],4,$str,1,0,'L',0);933 $pdf->Cell($t_width[2],4,$ras,1,0,'L',0);934 $pdf->Cell($t_width[3],4,$pr,1,0,'L',0);935 $pdf->Cell($t_width[4]+$t_width[5],4,'',1,0,'L',0);936 $pdf->Cell($t_width[6],4,'',1,0,'L',0);937 $pdf->Cell($t_width[7],4,'',1,0,'L',0);938 $pdf->Ln(7);939 940 $str=iconv('UTF-8', 'windows-1251', "По данным {$firm_vars['firm_name']} на ".date("d.m.Y",$date_end));941 $pdf->Write(4,$str);942 $pdf->Ln();943 if($razn>0) $str="переплата в пользу ".$firm_vars['firm_name']." $razn_p руб.";944 else if($razn<0) $str="задолженность в пользу ".$firm_vars['firm_name']." $razn_p руб.";945 else $str="переплат и задолженностей нет!";946 947 $str=iconv('UTF-8', 'windows-1251', $str);948 $pdf->Write(4,$str);949 $pdf->Ln(7);950 $x=$pdf->getX()+$t_width[0]+$t_width[1]+$t_width[2]+$t_width[3];951 $y=$pdf->getY();952 $str=iconv('UTF-8', 'windows-1251', "От {$firm_vars['firm_name']}\n\nДиректор ____________________________ ({$firm_vars['firm_director']})\n\n м.п.");953 $pdf->MultiCell($t_width[0]+$t_width[1]+$t_width[2]+$t_width[3],5,$str,0,'L',0);954 $str=iconv('UTF-8', 'windows-1251', "От $fn\n\n ____________________________ ($dir_fio)\n\n м.п.");955 $pdf->lMargin=$x;956 $pdf->setX($x);957 958 $pdf->setY($y);959 $pdf->MultiCell(0,5,$str,0,'L',0);960 $pdf->Ln();961 962 // $tmpl->AddText("<td colspan=4>963 // <tr><td colspan=4>От ".$dv['firm_name']."<br>964 // директор<br>____________________________ (".$dv['firm_director'].")<br><br>м.п.<br>965 // <td colspan=4>От $fn<br>966 // директор<br> ____________________________ (_____________)<br><br>м.п.<br>967 // </table>");968 969 $pdf->Output('akt_sverki.pdf','I');970 }971 }972 else if($mode=='sverka_op')973 {974 global $CONFIG;975 $opt=rcv('opt');976 if($opt=='')977 {978 doc_menu();979 $tmpl->SetTitle("Акт сверки");980 $dat=date("Y-m-d");981 $tmpl->AddText("982 <script src='/css/jquery/jquery.js' type='text/javascript'></script>983 <script src='/css/jquery/jquery.alerts.js' type='text/javascript'></script>984 <link href='/css/jquery/jquery.alerts.css' rel='stylesheet' type='text/css' media='screen' />985 <script type='text/javascript' src='/css/jquery/jquery.autocomplete.js'></script>986 <link rel='stylesheet' href='/css/jquery/ui/themes/base/jquery.ui.all.css'>987 <script src='/css/jquery/ui/jquery.ui.core.js'></script>988 <script src='/css/jquery/ui/jquery.ui.widget.js'></script>989 <script src='/css/jquery/ui/jquery.ui.datepicker.js'></script>990 <script src='/css/jquery/ui/i18n/jquery.ui.datepicker-ru.js'></script>991 <h1><b>Акт сверки</b></h1>992 <form action='' method='post'>993 <input type='hidden' name='mode' value='sverka_op'>994 Агент-партнёр:<br>995 <input type='hidden' name='agent_id' id='agent_id' value=''>996 <input type='text' id='ag' name='agent_name' style='width: 400px;' value=''><br>997 <p class='datetime'>998 Дата от:<br><input type='text' id='datepicker_f' name='date_st' value='1970-01-01' maxlength='10' /><br>999 Дата до:<br><input type='text' id='datepicker_t' name='date_end' value='$dat' maxlength='10' /></p><br>1000 Организация:<br><select name='firm_id'>1001 <option value='0'>--- Любая ---</option>");1002 $rs=mysql_query("SELECT `id`, `firm_name` FROM `doc_vars` ORDER BY `firm_name`");1003 while($nx=mysql_fetch_row($rs))1004 {1005 if($CONFIG['site']['default_firm']==$nx[0]) $s=' selected'; else $s='';1006 $tmpl->AddText("<option value='$nx[0]' $s>$nx[1]</option>");1007 }1008 $tmpl->AddText("</select><br>1009 Подтип документа (оставьте пустым, если учитывать не требуется):<br>1010 <input type='text' name='subtype'><br>1011 <label><input type='radio' name='opt' value='html'>Выводить в виде HTML</label><br>1012 <label><input type='radio' name='opt' value='pdf' checked>Выводить в виде PDF</label><br>1013 <input type=submit value='Сделать сверку!'>1014 </form>1015 1016 <script type='text/javascript'>1017 1018 function DtCheck(t)1019 {1020 var dn=new Array();1021 $doc_names1022 var popup=document.getElementById('doc_sel_popup');1023 var list=popup.getElementsByTagName('input');1024 var str='';1025 for(var i=0; i<list.length; i++)1026 {1027 if(list[i].checked)1028 str+=dn[list[i].value]+'; ';1029 }1030 document.getElementById('doc_sel').innerHTML=str;1031 }1032 1033 $(document).ready(function(){1034 $(\"#ag\").autocomplete(\"/docs.php\", {1035 delay:300,1036 minChars:1,1037 matchSubset:1,1038 autoFill:false,1039 selectFirst:true,1040 matchContains:1,1041 cacheLength:10,1042 maxItemsToShow:15,1043 formatItem:agliFormat,1044 onItemSelect:agselectItem,1045 extraParams:{'l':'agent','mode':'srv','opt':'ac'}1046 });1047 $.datepicker.setDefaults( $.datepicker.regional[ 'ru' ] );1048 1049 $( '#datepicker_f' ).datepicker({showButtonPanel: true });1050 $( '#datepicker_f' ).datepicker( 'option', 'dateFormat', 'yy-mm-dd' );1051 $( '#datepicker_f' ).datepicker( 'setDate' , '1970-01-01' );1052 $( '#datepicker_t' ).datepicker({showButtonPanel: true });1053 $( '#datepicker_t' ).datepicker( 'option', 'dateFormat', 'yy-mm-dd' );1054 $( '#datepicker_t' ).datepicker( 'setDate' , '$dat' );1055 });1056 function agliFormat (row, i, num) {1057 var result = row[0] + \"<em class='qnt'>тел. \" +1058 row[2] + \"</em> \";1059 return result;1060 }1061 function agselectItem(li) {1062 if( li == null ) var sValue = \"Ничего не выбрано!\";1063 if( !!li.extra ) var sValue = li.extra[0];1064 else var sValue = li.selectValue;1065 document.getElementById('agent_id').value=sValue;1066 }1067 1068 </script>");1069 }1070 else if($opt=='html')1071 {1072 $firm_id=rcv('firm_id');1073 $subtype=rcv('subtype');1074 1075 $date_st=strtotime(rcv('date_st'));1076 $date_end=strtotime(rcv('date_end'))+60*60*24-1;1077 $ag=rcv('agent_id');1078 1079 if($firm_id)1080 {1081 $res=mysql_query("SELECT * FROM `doc_vars` WHERE `id`='$firm_id'");1082 $dv=mysql_fetch_assoc($res);1083 }1084 if(!$date_end) $date_end=time();1085 $tmpl->LoadTemplate('print');1086 1087 $res=mysql_query("SELECT `id`, `fullname` FROM `doc_agent` WHERE `name`='$ag'");1088 $agent=mysql_result($res,0,0);1089 $fn=mysql_result($res,0,1);1090 1091 $tmpl->SetText("<center>Акт сверки<br>1092 взаимных расчетов<br>".$dv['firm_name']."<br>1093 c ".date("d.m.Y",$date_st)." по ".date("d.m.Y",$date_end)."1094 $fn</center>1095 Мы, нижеподписавшиеся, директор ".$dv['firm_name']." ".$dv['firm_director']."1096 c одной стороны, и _____________ $fn ____________________ с другой стороны,1097 составили настоящий акт сверки в том, что состояние взаимных расчетов по1098 данным учёта следующее:<br><br>");1099 1100 $sql_add='';1101 if($firm_id>0) $sql_add.=" AND `doc_list`.`firm_id`='$firm_id'";1102 if($subtype!='') $sql_add.=" AND `doc_list`.`subtype`='$subtype'";1103 1104 $res=mysql_query("SELECT `doc_list`.`id`,`doc_list`.`type`,`doc_list`.`date`,`doc_list`.`sum`,1105 `doc_list`.`altnum`, `doc_types`.`name`1106 FROM `doc_list`1107 LEFT JOIN `doc_types` ON `doc_types`.`id`=`doc_list`.`type`1108 WHERE `doc_list`.`agent`='$agent' AND `doc_list`.`ok`!='0' AND `doc_list`.`date`<='$date_end' ".$sql_add." ORDER BY `doc_list`.`date`" );1109 1110 $tmpl->AddText("<table width=100%>1111 <tr>1112 <td colspan=4 width='50%'>по данным ".$dv['firm_name']."1113 <td colspan=4 width='50%'>по данным $fn1114 <tr>1115 <th>Дата<th>Операция<th>Дебет<th>Кредит1116 <th>Дата<th>Операция<th>Дебет<th>Кредит");1117 $pr=$ras=0;1118 $f_print=false;1119 while($nxt=mysql_fetch_row($res))1120 {1121 $deb=$kr="";1122 1123 if( ($nxt[2]>=$date_st) && (!$f_print) )1124 {1125 $f_print=true;1126 if($pr>$ras)1127 {1128 $pr-=$ras;1129 $ras='';1130 }1131 else if($pr<$ras)1132 {1133 $ras-=$pr;1134 $pr='';1135 }1136 else $pr=$ras='';1137 if($pr) $pr=sprintf("%01.2f", $pr);1138 if($ras)$ras=sprintf("%01.2f", $ras);1139 $tmpl->AddText("<tr><td colspan=2>Сальдо на начало периода<td>$ras<td>$pr<td><td><td><td>");1140 }1141 1142 if($nxt[1]==1)1143 {1144 $pr+=$nxt[3];1145 $kr=$nxt[3];1146 }1147 else if($nxt[1]==15)1148 {1149 $ras+=$nxt[3];1150 $deb=$nxt[3];1151 }1152 if( ($nxt[1]==3) || ($nxt[1]==12))1153 {1154 continue;1155 }1156 if($nxt[1]==4)1157 {1158 $pr+=$nxt[3];1159 $kr=$nxt[3];1160 }1161 if($nxt[1]==5)1162 {1163 $ras+=$nxt[3];1164 $deb=$nxt[3];1165 }1166 if($nxt[1]==6)1167 {1168 $pr+=$nxt[3];1169 $kr=$nxt[3];1170 }1171 if($nxt[1]==7)1172 {1173 $ras+=$nxt[3];1174 $deb=$nxt[3];1175 }1176 1177 if($f_print)1178 {1179 if(!$nxt[4]) $nxt[4]=$nxt[0];1180 if($deb) $deb=sprintf("%01.2f", $deb);1181 if($kr) $kr=sprintf("%01.2f", $kr);1182 $dt=date("d.m.Y",$nxt[2]);1183 $tmpl->AddText("<tr><td>$dt<td>$nxt[5] N$nxt[4]<td>$deb<td>$kr<td><td><td><td>");1184 }1185 }1186 1187 $razn=$pr-$ras;1188 $razn_p=abs($razn);1189 $razn_p=sprintf("%01.2f", $razn_p);1190 1191 $pr=sprintf("%01.2f", $pr);1192 $ras=sprintf("%01.2f", $ras);1193 1194 $tmpl->AddText("<tr><td colspan=2>Обороты за период<td>$ras<td>$pr<td><td><td><td>");1195 if($pr>$ras)1196 {1197 $pr-=$ras;1198 $ras='';1199 }1200 else if($pr<$ras)1201 {1202 $ras-=$pr;1203 $pr='';1204 }1205 else $pr=$ras='';1206 if($pr) $pr=sprintf("%01.2f", $pr);1207 if($ras)$ras=sprintf("%01.2f", $ras);1208 1209 $tmpl->AddText("<tr><td colspan=2>Сальдо на конец периода<td>$ras<td>$pr<td colspan=4>1210 <tr><td colspan=4>");1211 if($razn>0) $tmpl->AddText("переплата в пользу ".$dv['firm_name']." $razn_p руб.");1212 else if($razn<0) $tmpl->AddText("задолженность в пользу ".$dv['firm_name']." $razn_p руб.");1213 else $tmpl->AddText("$razn переплат и задолженностей нет!");1214 1215 $tmpl->AddText("<td colspan=4>1216 <tr><td colspan=4>От ".$dv['firm_name']."<br>1217 директор<br>____________________________ (".$dv['firm_director'].")<br><br>м.п.<br>1218 <td colspan=4>От $fn<br>1219 директор<br> ____________________________ (_____________)<br><br>м.п.<br>1220 </table>");1221 }1222 else if($opt=='pdf')1223 {1224 $firm_id=rcv('firm_id');1225 $subtype=rcv('subtype');1226 $date_st=strtotime(rcv('date_st'));1227 $date_end=strtotime(rcv('date_end'))+60*60*24-1;1228 $agent_id=rcv('agent_id');1229 1230 if($firm_id)1231 {1232 $res=mysql_query("SELECT * FROM `doc_vars` WHERE `id`='$firm_id'");1233 if(mysql_errno()) throw new Exception("Не удалось выбрать данные фирмы");1234 $firm_vars=mysql_fetch_assoc($res);1235 }1236 if(!$date_end) $date_end=time();1237 1238 $res=mysql_query("SELECT `id`, `fullname`, `pdol`, `pfio` FROM `doc_agent` WHERE `id`='$agent_id'");1239 if(mysql_errno()) throw new Exception("Не удалось выбрать агента");1240 $agent=mysql_fetch_assoc($res);1241 1242 $firm_vars['firm_name']=unhtmlentities($firm_vars['firm_name']);1243 $agent['fullname']=unhtmlentities($agent['fullname']);1244 1245 define('FPDF_FONT_PATH',$CONFIG['site']['location'].'/fpdf/font/');1246 require('fpdf/fpdf.php');1247 $pdf=new FPDF('P');1248 $pdf->Open();1249 $pdf->SetAutoPageBreak(1,12);1250 $pdf->AddFont('Arial','','arial.php');1251 $pdf->tMargin=10;1252 $pdf->AddPage('P');1253 1254 $pdf->SetFont('Arial','',16);1255 $str = iconv('UTF-8', 'windows-1251', "Акт сверки взаимных расчетов");1256 $pdf->Cell(0,6,$str,0,1,'C',0);1257 1258 $str="от {$firm_vars['firm_name']}\nза период с ".date("d.m.Y",$date_st)." по ".date("d.m.Y",$date_end);1259 $pdf->SetFont('Arial','',10);1260 $str = iconv('UTF-8', 'windows-1251', $str);1261 $pdf->MultiCell(0,4,$str,0,'C',0);1262 $pdf->Ln(2);1263 $str="Мы, нижеподписавшиеся, директор {$firm_vars['firm_name']} {$firm_vars['firm_director']} c одной стороны, и {$agent['fullname']} , с другой стороны, составили настоящий акт сверки о том, что состояние взаимных расчетов по данным учёта следующее:";1264 $str = iconv('UTF-8', 'windows-1251', $str);1265 $pdf->Write(5,$str,'');1266 1267 $pdf->Ln(8);1268 $y=$pdf->GetY();1269 $base_x=$pdf->GetX();1270 $pdf->SetLineWidth(0.5);1271 $t_width=array(17,44,17,17,17,44,17,0);1272 $t_text=array('Дата', 'Операция', 'Дебет', 'Кредит', 'Дата', 'Операция', 'Дебет', 'Кредит');1273 1274 $h_width=$t_width[0]+$t_width[1]+$t_width[2]+$t_width[3];1275 $str1=iconv('UTF-8', 'windows-1251', "По данным {$firm_vars['firm_name']}");1276 $str2=iconv('UTF-8', 'windows-1251', "По данным {$agent['fullname']}");1277 1278 $pdf->MultiCell($h_width,5,$str1,0,'L',0);1279 $max_h=$pdf->GetY()-$y;1280 $pdf->SetY($y);1281 $pdf->SetX($base_x+$h_width);1282 $pdf->MultiCell(0,5,$str2,0,'L',0);1283 if( ($pdf->GetY()-$y) > $max_h) $max_h=$pdf->GetY()-$y;1284 //$pdf->Cell(0,5,$str2,1,0,'L',0);1285 $pdf->SetY($y);1286 $pdf->SetX($base_x);1287 $pdf->Cell($h_width,$max_h,'',1,0,'L',0);1288 $pdf->Cell(0,$max_h,'',1,0,'L',0);1289 $pdf->Ln();1290 foreach($t_width as $i => $w)1291 {1292 $str = iconv('UTF-8', 'windows-1251', $t_text[$i]);1293 $pdf->Cell($w,5,$str,1,0,'C',0);1294 }1295 $pdf->SetLineWidth(0.2);1296 $pdf->Ln();1297 $pdf->SetFont('','',8);1298 $pr=$ras=0;1299 $f_print=false;1300 1301 $sql_add='';1302 if($firm_id>0) $sql_add.=" AND `doc_list`.`firm_id`='$firm_id'";1303 if($subtype!='') $sql_add.=" AND `doc_list`.`subtype`='$subtype'";1304 1305 $res=mysql_query("SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`date`, `doc_list`.`sum`,1306 `doc_list`.`altnum`, `doc_types`.`name`1307 FROM `doc_list`1308 LEFT JOIN `doc_types` ON `doc_types`.`id`=`doc_list`.`type`1309 WHERE `doc_list`.`agent`='{$agent['id']}' AND `doc_list`.`ok`!='0' AND `doc_list`.`date`<='$date_end' AND `doc_list`.`type`<'8' AND `doc_list`.`type`!='3' ".$sql_add." ORDER BY `doc_list`.`date`" );1310 while($nxt=mysql_fetch_array($res))1311 {1312 $deb=$kr="";1313 if( ($nxt[2]>=$date_st) && (!$f_print) )1314 {1315 $f_print=true;1316 if($pr>$ras)1317 {1318 $pr-=$ras;1319 $ras='';1320 }1321 else if($pr<$ras)1322 {1323 $ras-=$pr;1324 $pr='';1325 }1326 else $pr=$ras='';1327 if($pr) $pr=sprintf("%01.2f", $pr);1328 if($ras)$ras=sprintf("%01.2f", $ras);1329 1330 $str=iconv('UTF-8', 'windows-1251', "Сальдо на начало периода");1331 $pdf->Cell($t_width[0]+$t_width[1],4,$str,1,0,'L',0);1332 $pdf->Cell($t_width[2],4,$ras,1,0,'R',0);1333 $pdf->Cell($t_width[3],4,$pr,1,0,'R',0);1334 $pdf->Cell($t_width[4]+$t_width[5],4,'',1,0,'L',0);1335 $pdf->Cell($t_width[6],4,'',1,0,'L',0);1336 $pdf->Cell($t_width[7],4,'',1,0,'L',0);1337 $pdf->Ln();1338 }1339 1340 if($nxt[1]==1)1341 {1342 $pr+=$nxt[3];1343 $kr=$nxt[3];1344 }1345 else if($nxt[1]==15)1346 {1347 $ras+=$nxt[3];1348 $deb=$nxt[3];1349 }1350 if( ($nxt[1]==2) || ($nxt[1]==12))1351 {1352 continue;1353 }1354 if($nxt[1]==4)1355 {1356 $pr+=$nxt[3];1357 $kr=$nxt[3];1358 }1359 if($nxt[1]==5)1360 {1361 $ras+=$nxt[3];1362 $deb=$nxt[3];1363 }1364 if($nxt[1]==6)1365 {1366 $pr+=$nxt[3];1367 $kr=$nxt[3];1368 }1369 if($nxt[1]==7)1370 {1371 $ras+=$nxt[3];1372 $deb=$nxt[3];1373 }1374 1375 if($f_print)1376 {1377 if(!$nxt[4]) $nxt[4]=$nxt[0];1378 if($deb) $deb=sprintf("%01.2f", $deb);1379 if($kr) $kr=sprintf("%01.2f", $kr);1380 $dt=date("d.m.Y",$nxt[2]);1381 $str=iconv('UTF-8', 'windows-1251', "$nxt[5] N$nxt[4]");1382 $pdf->Cell($t_width[0],4,$dt,1,0,'L',0);1383 $pdf->Cell($t_width[1],4,$str,1,0,'L',0);1384 $pdf->Cell($t_width[2],4,$deb,1,0,'R',0);1385 $pdf->Cell($t_width[3],4,$kr,1,0,'R',0);1386 $pdf->Cell($t_width[4],4,'',1,0,'L',0);1387 $pdf->Cell($t_width[5],4,'',1,0,'L',0);1388 $pdf->Cell($t_width[6],4,'',1,0,'L',0);1389 $pdf->Cell($t_width[7],4,'',1,0,'L',0);1390 $pdf->Ln();1391 }1392 }1393 1394 $razn=$pr-$ras;1395 $razn_p=abs($razn);1396 $razn_p=sprintf("%01.2f", $razn_p);1397 1398 $pr=sprintf("%01.2f", $pr);1399 $ras=sprintf("%01.2f", $ras);1400 1401 $str=iconv('UTF-8', 'windows-1251', "Обороты за период");1402 $pdf->Cell($t_width[0]+$t_width[1],4,$str,1,0,'L',0);1403 $pdf->Cell($t_width[2],4,$ras,1,0,'R',0);1404 $pdf->Cell($t_width[3],4,$pr,1,0,'R',0);1405 $pdf->Cell($t_width[4]+$t_width[5],4,'',1,0,'L',0);1406 $pdf->Cell($t_width[6],4,'',1,0,'L',0);1407 $pdf->Cell($t_width[7],4,'',1,0,'L',0);1408 $pdf->Ln();1409 1410 if($pr>$ras)1411 {1412 $pr-=$ras;1413 $ras='';1414 }1415 else if($pr<$ras)1416 {1417 $ras-=$pr;1418 $pr='';1419 }1420 else $pr=$ras='';1421 if($pr) $pr=sprintf("%01.2f", $pr);1422 if($ras)$ras=sprintf("%01.2f", $ras);1423 1424 $str=iconv('UTF-8', 'windows-1251', "Сальдо на конец периода");1425 $pdf->Cell($t_width[0]+$t_width[1],4,$str,1,0,'L',0);1426 $pdf->Cell($t_width[2],4,$ras,1,0,'L',0);1427 $pdf->Cell($t_width[3],4,$pr,1,0,'L',0);1428 $pdf->Cell($t_width[4]+$t_width[5],4,'',1,0,'L',0);1429 $pdf->Cell($t_width[6],4,'',1,0,'L',0);1430 $pdf->Cell($t_width[7],4,'',1,0,'L',0);1431 $pdf->Ln(7);1432 1433 $str=iconv('UTF-8', 'windows-1251', "По данным {$firm_vars['firm_name']} на ".date("d.m.Y",$date_end));1434 $pdf->Write(4,$str);1435 $pdf->Ln();1436 if($razn>0) $str="переплата в пользу ".$firm_vars['firm_name']." $razn_p руб.";1437 else if($razn<0) $str="задолженность в пользу ".$firm_vars['firm_name']." $razn_p руб.";1438 else $str="переплат и задолженностей нет!";1439 1440 $str=iconv('UTF-8', 'windows-1251', $str);1441 $pdf->Write(4,$str);1442 $pdf->Ln(7);1443 $x=$pdf->getX()+$t_width[0]+$t_width[1]+$t_width[2]+$t_width[3];1444 $y=$pdf->getY();1445 $str=iconv('UTF-8', 'windows-1251', "От {$firm_vars['firm_name']}\n\nДиректор ____________________________ ({$firm_vars['firm_director']})\n\n м.п.");1446 $pdf->MultiCell($t_width[0]+$t_width[1]+$t_width[2]+$t_width[3],5,$str,0,'L',0);1447 $str=iconv('UTF-8', 'windows-1251', "От {$agent['fullname']}\n\n ____________________________ ( )\n\n м.п.");1448 $pdf->lMargin=$x;1449 $pdf->setX($x);1450 1451 $pdf->setY($y);1452 $pdf->MultiCell(0,5,$str,0,'L',0);1453 $pdf->Ln();1454 1455 // $tmpl->AddText("<td colspan=4>1456 // <tr><td colspan=4>От ".$dv['firm_name']."<br>1457 // директор<br>____________________________ (".$dv['firm_director'].")<br><br>м.п.<br>1458 // <td colspan=4>От $fn<br>1459 // директор<br> ____________________________ (_____________)<br><br>м.п.<br>1460 // </table>");1461 1462 $pdf->Output('akt_sverki.pdf','I');1463 }1464 }1465 else if($mode=='agent_otchet')1466 {1467 $tmpl->AddText("<h1>отчёт по агенту</h1>1468 <form action=''>1469 <input type=hidden name=mode value='agent_otchet_ex'>1470 Агент-партнёр:<br>1471 <input type=hidden name=agent value='$doc_data[2]' id='sid' >1472 <input type=text id='sdata' value='$doc_data[3]' onkeydown=\"return RequestData('/docs.php?l=agent&mode=srv&opt=popup')\">1473 <div id='popup'></div>1474 <div id=status></div>1475 <input type=submit value='Сгенерировать'>1476 </form>");1477 }1478 else if($mode=='agent_otchet_ex')1479 {1480 $agent=rcv('agent');1481 $tmpl->LoadTemplate('print');1482 $res=mysql_query("SELECT `name` FROM `doc_agent` WHERE `id`='$agent'");1483 $ag_name=mysql_result($res,0,0);1484 $tmpl->AddText("<h1>Отчет по: $ag_name</h1>1485 <table><tr>1486 <th>Документ<th>Приход<th>Расход<th>Остаток");1487 $res=mysql_query("SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`sum`, `doc_list`.`altnum`, `doc_list`.`subtype`, `doc_list`.`date`1488 FROM `doc_list`1489 WHERE `doc_list`.`ok`>'0' AND `doc_list`.`mark_del`='0' AND `doc_list`.`agent`='$agent'1490 ORDER BY `doc_list`.`date`");1491 $sum=0;1492 echo mysql_error();1493 while($nxt=mysql_fetch_row($res))1494 {1495 $prix=$rasx=$tovar=0;1496 switch($nxt[1])1497 {1498 case 1: $prix=$nxt[2]; $tovar=1; break;1499 case 2: $rasx=$nxt[2]; $tovar=1; break;1500 case 4: $prix=$nxt[2]; break;1501 case 5: $rasx=$nxt[2]; break;1502 case 6: $prix=$nxt[2]; break;1503 case 7: $rasx=$nxt[2]; break;1504 }1505 $sum=$sum+$prix-$rasx;1506 $sum_p=$prix_p=$rasx_p='';1507 if($sum) $sum_p=sprintf("%0.2f",$sum);1508 if($prix) $prix_p=sprintf("%0.2f",$prix);1509 if($rasx) $rasx_p=sprintf("%0.2f",$rasx);1510 $dt=date("d.m.Y H:i:s",$nxt[5]);1511 1512 if($tovar)1513 {1514 $tovar='';1515 $rs=mysql_query("SELECT `doc_base`.`name`, `doc_base`.`proizv`, `doc_list_pos`.`cnt`1516 FROM `doc_list_pos`1517 LEFT JOIN `doc_base` ON `doc_base`.`id`= `doc_list_pos`.`tovar`1518 WHERE `doc_list_pos`.`doc`='$nxt[0]'");1519 while($nx=mysql_fetch_row($rs))1520 {1521 if(!$tovar) $tovar="$nx[0]/$nx[1]:$nx[2]";1522 else $tovar.=", $nx[0]/$nx[1]:$nx[2]";1523 }1524 $tovar="<br>Товары: $tovar";1525 }1526 else $tovar='';1527 1528 $tmpl->AddText("<tr><td>".$doc_types[$nxt[1]]." N$nxt[3]$nxt[4] ($nxt[0])<br>от $dt $tovar<td>$prix_p<td>$rasx_p<td>$sum_p");1529 }1530 $tmpl->AddText("</table>");1531 176 } 1532 177 else if($mode=='prod') … … 1750 395 } 1751 396 } 1752 else if($mode=='agent_bez_prodaj')1753 {1754 $opt=rcv('opt');1755 if($opt=='')1756 {1757 $tmpl->AddText("<h1>Агенты без продаж за заданный период</h1>1758 <form action='' method='post'>1759 <input type='hidden' name='mode' value='agent_bez_prodaj'>1760 <input type='hidden' name='opt' value='html'>1761 <p class='datetime'>1762 <fieldset><legend>Дата</legend>1763 <input type=text id='id_pub_date_date' class='vDateField required' name='dt_f' value='$date'>1764 </fieldset>1765 <label><input type='checkbox' name='fix' value='1'>Только с назначенным ответственным лицом</label><br>1766 <input type=submit value='Показать'></form>");1767 }1768 else1769 {1770 $sql_add= (rcv('fix')==1) ? " AND `doc_agent`.`responsible`>'0' " : '';1771 $tmpl->AddText("<h1>Агенты без продаж с $dt_f по текущий момент</h1><ul>");1772 1773 $res=mysql_query("SELECT `doc_agent`.`id`, `doc_agent`.`name`, `doc_agent`.`responsible`, `users`.`name` FROM `doc_agent`1774 LEFT JOIN `users` ON `users`.`id`=`doc_agent`.`responsible`1775 WHERE `doc_agent`.`id` NOT IN (SELECT `agent` FROM `doc_list` WHERE `date`>='$dt_sql' ) $sql_add");1776 while($nxt=mysql_fetch_row($res))1777 {1778 $tmpl->AddText("<li>id:$nxt[0] - $nxt[1] ($nxt[3], id:$nxt[2])</li>");1779 }1780 $tmpl->AddText("</ul>");1781 }1782 }1783 397 else $tmpl->msg("ERROR $mode","err"); 1784 398 -
web/include/reports/store.php
r85095b7 r90ef7fb 136 136 { 137 137 global $tmpl; 138 $tmpl-> SetText("<h1>Остатки товара на складе</h1>138 $tmpl->AddText("<h1>".$this->getName()."</h1> 139 139 <form action='' method='post'> 140 140 <input type='hidden' name='mode' value='store'> … … 160 160 $cost=@$_POST['cost']; 161 161 $tmpl->LoadTemplate('print'); 162 $tmpl->SetText("<h1> Остатки товара на складе</h1>162 $tmpl->SetText("<h1>".$this->getName()."</h1> 163 163 <table width=100%><tr><th>N<th>Наименование<th>Количество<th>Актуальная цена<br>поступления<th>Базовая цена<th>Наценка<th>Сумма по АЦП<th>Сумма по базовой"); 164 164 $col_count=8; … … 229 229 }; 230 230 231 $active_report=new Report_Store();232 231 ?> 233 232
Note: See TracChangeset
for help on using the changeset viewer.