Changeset a154a55
- Timestamp:
- Jul 13, 2011, 2:49:27 AM (12 years ago)
- Branches:
- master
- Children:
- 7a2e7a9
- Parents:
- b61b7ab
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
cli/db_optimize.php
rb61b7ab ra154a55 34 34 include_once($CONFIG['site']['location']."/include/doc.peremeshenie.php"); 35 35 include_once($CONFIG['site']['location']."/include/doc.perkas.php"); 36 37 36 include_once($CONFIG['site']['location']."/include/doc.sborka.php"); 37 include_once($CONFIG['site']['location']."/include/doc.kordolga.php"); 38 38 39 $mail->FromName = $CONFIG['site']['name'].' - Site Service System'; 39 40 $mail->CharSet = "UTF-8"; … … 113 114 114 115 // ================================ Перепроводка документов с коррекцией сумм ============================ 115 echo"Перепроводка документов... ";116 echo"Перепроводка документов...\n\n"; 116 117 $i=0; 117 118 $res=mysql_query("UPDATE `doc_kassa` SET `ballance`='0'"); … … 127 128 if($err=$document->Apply($nxt[0],1)) 128 129 { 129 $text="$nxt[0]($typename): Списание в минус! ($err) ЭТО КРИТИЧЕСКАЯ ОШИБКА! ОСТАТКИ НА СКЛАДЕ НЕВЕРНЫ!\n"; 130 mysql_query("UPDATE `doc_list` SET `err_flag`='1' WHERE `id`='$nxt[0]'"); 131 $text="$nxt[0]($typename): $err ЭТО КРИТИЧЕСКАЯ ОШИБКА! ОСТАТКИ НА СКЛАДЕ, В КАССАХ, И БАНКАХ НЕВЕРНЫ!\n"; 130 132 echo $text; 131 133 $mail_text.=$text; … … 146 148 echo "Удаление помеченных на удаление...\n"; 147 149 // ============================= Удаление помеченных на удаление ========================================= 148 $tim_minus=time()-60*60*24* 7;150 $tim_minus=time()-60*60*24*$CONFIG['auto']['doc_del_days']; 149 151 $res=mysql_query("SELECT `id`, `type` FROM `doc_list` WHERE `mark_del`<'$tim_minus' AND `mark_del`>'0'"); 150 152 while($nxt=mysql_fetch_row($res)) -
config_all.sample.php
rb61b7ab ra154a55 36 36 $mail->Sender = $CONFIG['site']['admin_email']; 37 37 $mail->From = $CONFIG['site']['admin_email']; 38 $mail->FromName = 'Site '.$CONFIG['site']['name'];38 $mail->FromName = $CONFIG['site']['display_name']; 39 39 $mail->Mailer = "mail"; 40 40 $mail->CharSet = "UTF-8"; -
config_cli.sample.php
rb61b7ab ra154a55 43 43 $CONFIG['auto']['user_del_days'] = 14; // Стирать неактивных пользователей через X дней 44 44 $CONFIG['auto']['move_nr_to_end'] = true; // Перемещать непроведенные реализации на последний день 45 $CONFIG['auto']['doc_del_days'] = 2; // Стирать отмеченные на удаление документы через X дней 45 46 46 47 // ======================== НИЖЕ НЕ ИСПРАВЛЯТЬ ============================= -
db_struct.sql
rb61b7ab ra154a55 617 617 `mark_del` bigint(20) NOT NULL, 618 618 `firm_id` int(11) NOT NULL DEFAULT '1', 619 `err_flag` tinyint(4) NOT NULL DEFAULT '0', 619 620 UNIQUE KEY `id` (`id`), 620 621 KEY `type` (`type`), … … 1619 1620 (30, 'generic_news', 'Новости', 'view,create,edit,delete'), 1620 1621 (31, 'doc_service', 'Служебные функции', 'view'), 1621 (32, 'doc_scr opts', 'Сценарии и операции', 'view,exec'),1622 (32, 'doc_scripts', 'Сценарии и операции', 'view,exec'), 1622 1623 (33, 'log', 'Системные журналы', ''), 1623 1624 (34, 'log_browser', 'Статистирка броузеров', 'view'), -
web/core.php
rb61b7ab ra154a55 18 18 // 19 19 20 define("MULTIMAG_VERSION", "0.0.1r25 2");20 define("MULTIMAG_VERSION", "0.0.1r254"); 21 21 header("X-Powered-By: MultiMag ".MULTIMAG_VERSION); 22 22 -
web/css/doc_script.js
rb61b7ab ra154a55 102 102 else 103 103 { 104 jAlert("Документ не проведён!" ,"Ошибка "+httpRequest.status, {}, 'icon_err');104 jAlert("Документ не проведён!"+httpRequest.responseText,"Ошибка "+httpRequest.status, {}, 'icon_err'); 105 105 provodki.innerHTML=old_provodki; 106 106 } -
web/doc_otchet.php
rb61b7ab ra154a55 34 34 'doc_otchet.php?mode=sverka_op' => 'Акт сверки (оперативный)', 35 35 'doc_otchet.php?mode=balance' => 'Балланс', 36 'doc_otchet.php?mode=dolgi' => 'Долги: партнёров', 37 'doc_otchet.php?mode=dolgi&opt=1' => 'Долги: наши', 36 'doc_otchet.php?mode=dolgi' => 'Долги', 38 37 'doc_otchet.php?mode=kassday' => 'Кассовый отчёт за день', 38 'doc_otchet.php?mode=kassday2' => 'Кассовый отчёт за день (2)', 39 39 'doc_otchet.php?mode=ostatki' => 'Остатки на складе', 40 40 'doc_otchet.php?mode=ostatki_d' => 'Остатки на складе на дату', … … 57 57 <a href='doc_otchet.php?mode=sverka'><div>Акт сверки</div></a> 58 58 <a href='doc_otchet.php?mode=balance'><div>Балланс</div></a> 59 <a href='doc_otchet.php?mode=dolgi'><div>Долги: партнёров</div></a> 60 <a href='doc_otchet.php?mode=dolgi&opt=1'><div>Долги: наши</div></a> 59 <a href='doc_otchet.php?mode=dolgi'><div>Долги</div></a> 61 60 <a href='doc_otchet.php?mode=kassday'><div>Кассовый отчёт за день</div></a> 61 <a href='doc_otchet.php?mode=kassday'><div>Кассовый отчёт за день (2)</div></a> 62 62 <a href='doc_otchet.php?mode=ostatki'><div>Остатки на складе</div></a> 63 63 <a href='doc_otchet.php?mode=ostatki_d'><div>Остатки на складе на дату</div></a> … … 255 255 }; 256 256 257 class Report_KassDay2 258 { 259 function Form() 260 { 261 global $tmpl; 262 $curdate=date("Y-m-d"); 263 $tmpl->AddText("<h1>Отчёт по кассе за текущий день (вариант 2)</h1> 264 <link rel='stylesheet' href='/css/jquery/ui/themes/base/jquery.ui.all.css'> 265 <script src='/css/jquery/ui/jquery.ui.core.js'></script> 266 <script src='/css/jquery/ui/jquery.ui.widget.js'></script> 267 <script src='/css/jquery/ui/jquery.ui.datepicker.js'></script> 268 <script src='/css/jquery/ui/i18n/jquery.ui.datepicker-ru.js'></script> 269 <form action=''> 270 <input type='hidden' name='mode' value='kassday2'> 271 <input type='hidden' name='opt' value='ok'> 272 Выберите кассу:<br> 273 <select name='kass'>"); 274 $res=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `ids`='kassa' ORDER BY `num`"); 275 while($nxt=mysql_fetch_row($res)) 276 { 277 $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>"); 278 } 279 $tmpl->AddText("</select><br> 280 Выберите дату:<br> 281 <input type='text' name='date' id='datepicker_f' value='$curdate'><br> 282 <button type='submit'>Сформировать</button></form>"); 283 } 284 285 function MakeHTML() 286 { 287 global $tmpl; 288 $tmpl->LoadTemplate('print'); 289 $dt=rcv('date'); 290 $kass=rcv('kass'); 291 $tmpl->AddText("<h1>Отчёт по кассе за $dt (вариант 2)</h1>"); 292 $daystart=strtotime("$dt 00:00:00"); 293 $dayend=strtotime("$dt 23:59:59"); 294 $tmpl->AddText("<table width='100%'><tr><th>ID<th>Время<th>Документ<th>Приход<th>Расход"); 295 $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` 296 FROM `doc_list` 297 INNER JOIN `doc_agent` ON `doc_agent`.`id` = `doc_list`.`agent` 298 INNER JOIN `doc_types` ON `doc_types`.`id` = `doc_list`.`type` 299 LEFT JOIN `doc_list` AS `p` ON `p`.`id`=`doc_list`.`p_doc` 300 LEFT JOIN `doc_types` AS `t` ON `t`.`id` = `p`.`type` 301 WHERE `doc_list`.`ok`>'0' AND ( `doc_list`.`type`='6' OR `doc_list`.`type`='7') AND `doc_list`.`kassa`='$kass' 302 ORDER BY `doc_list`.`date`"); 303 $sum=$daysum=$prix=$rasx=0; 304 $flag=0; 305 while($nxt=mysql_fetch_row($res)) 306 { 307 $csum_p=$csum_r=''; 308 if( !$flag && $nxt[3]>=$daystart && $nxt[3]<=$dayend) 309 { 310 $flag=1; 311 $sum_p=sprintf("%0.2f руб.",$sum); 312 $tmpl->AddText("<tr><td>-<td>-<td><b>На начало дня</b><td align='right' colspan='2'><b>$sum_p</b>"); 313 } 314 if($nxt[1]==6) $sum+=$nxt[2]; 315 else $sum-=$nxt[2]; 316 if($nxt[3]>=$daystart && $nxt[3]<=$dayend) 317 { 318 if($nxt[1]==6) 319 { 320 $daysum+=$nxt[2]; 321 $prix+=$nxt[2]; 322 $csum_p=sprintf("%0.2f руб.",$nxt[2]); 323 } 324 else 325 { 326 $daysum-=$nxt[2]; 327 $rasx+=$nxt[2]; 328 $csum_r=sprintf("%0.2f руб.",$nxt[2]); 329 } 330 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>"; 331 else $sadd=''; 332 $dt=date("H:i:s",$nxt[3]); 333 $sum_p=sprintf("%0.2f руб.",$sum); 334 335 $tmpl->AddText("<tr><td>$nxt[0]<td>$dt<td>$nxt[6] N$nxt[4]$nxt[5] $sadd<br>от $nxt[7]<td align='right'>$csum_p<td align='right'>$csum_r"); 336 } 337 } 338 $dsum_p=sprintf("%0.2f руб.",$daysum); 339 $psum_p=sprintf("%0.2f руб.",$prix); 340 $rsum_p=sprintf("%0.2f руб.",$rasx); 341 $tmpl->AddText("<tr><td>-<td>-<td><b>На конец дня</b><td align='right' colspan='2'><b>$sum_p</b>"); 342 // $tmpl->AddText("<tr><td>-<td>-<td><b>Приход за смену</b><td>-<td align='right'><b>$psum_p</b>"); 343 // if($rasx) 344 // { 345 // $tmpl->AddText("<tr><td>-<td>-<td><b>Расход за смену</b><td>-<td align='right'><b>$rsum_p</b>"); 346 // $tmpl->AddText("<tr><td>-<td>-<td><b>Разница за смену</b><td>-<td align='right'><b>$dsum_p</b>"); 347 // } 348 // 349 // $res=mysql_query("SELECT `name` FROM `users` WHERE `id`='$uid'"); 350 // $nm=mysql_result($res,0,0); 351 // 352 // $tmpl->AddText("</table><br><br> 353 // Cоответствие суммы подтверждаю ___________________ ($nm)"); 354 } 355 356 function Run($opt) 357 { 358 if($opt=='') $this->Form(); 359 else $this->MakeHTML(); 360 } 361 }; 362 363 class Report_Dolgi 364 { 365 function Form() 366 { 367 global $tmpl; 368 $curdate=date("Y-m-d"); 369 $tmpl->AddText("<h1>Отчёт по долгам</h1> 370 <form action=''> 371 <input type='hidden' name='mode' value='dolgi'> 372 <input type='hidden' name='opt' value='ok'> 373 Группа агентов:<br> 374 <select name='agroup'> 375 <option value='0'>--все--</option>"); 376 $res=mysql_query("SELECT `id`, `name` FROM `doc_agent_group` ORDER BY `name`"); 377 while($nxt=mysql_fetch_row($res)) 378 { 379 $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>"); 380 } 381 $tmpl->AddText("</select><br> 382 <fieldset><legend>Вид задолженности</legend> 383 <label><input type='radio' name='vdolga' value='1' checked>Нам должны</label><br> 384 <label><input type='radio' name='vdolga' value='2'>Мы должны</label> 385 </fieldset> 386 <button type='submit'>Сформировать</button></form>"); 387 } 388 389 function MakeHTML($vdolga) 390 { 391 global $tmpl; 392 $vdolga=rcv('vdolga'); 393 $agroup=rcv('agroup'); 394 $tmpl->LoadTemplate('print'); 395 if($vdolga==2) $tmpl->SetText("<h1>Мы должны (от ".date('d.m.Y').")</h1>"); 396 else $tmpl->SetText("<h1>Долги партнёров (от ".date('d.m.Y').")</h1>"); 397 $tmpl->AddText("<table width=100%><tr><th>N<th>Агент - партнер<th>Дата сверки<th>Сумма"); 398 $sql_add=$agroup?"WHERE `group`='$agroup'":''; 399 $res=mysql_query("SELECT `id`, `name`, `data_sverki` FROM `doc_agent` $sql_add ORDER BY `name`"); 400 $i=0; 401 $sum_dolga=0; 402 while($nxt=mysql_fetch_row($res)) 403 { 404 $dolg=DocCalcDolg($nxt[0],0); 405 if( (($dolg>0)&&($vdolga==1))|| (($dolg<0)&&($vdolga==2)) ) 406 { 407 $i++; 408 $dolg=abs($dolg); 409 $sum_dolga+=$dolg; 410 $dolg=sprintf("%0.2f",$dolg); 411 $tmpl->AddText("<tr><td>$i<td>$nxt[1]<td>$nxt[2]<td align='right'>$dolg руб."); 412 413 } 414 } 415 $tmpl->AddText("</table> 416 <p>Итого: $i должников с общей суммой долга $sum_dolga руб.<br> (".num2str($sum_dolga).")</p>"); 417 } 418 419 function Run($opt) 420 { 421 if($opt=='') $this->Form(); 422 else $this->MakeHTML(); 423 } 424 }; 425 257 426 258 427 … … 264 433 <h3>Доступные виды отчётов</h3> 265 434 ".otch_list()."<br><br><br><br><br>"); 435 } 436 else if($mode=='kassday2') 437 { 438 $opt=rcv('opt'); 439 $otchet=new Report_KassDay2(); 440 $otchet->Run($opt); 266 441 } 267 442 else if($mode=='pmenu') … … 372 547 { 373 548 $opt=rcv('opt'); 374 $tmpl->LoadTemplate('print'); 375 if($opt) $tmpl->SetText("<h1>Мы должны (от ".date('d.m.Y').")</h1>"); 376 else $tmpl->SetText("<h1>Долги партнёров (от ".date('d.m.Y').")</h1>"); 377 $tmpl->AddText("<table width=100%><tr><th>N<th>Агент - партнер<th>Дата сверки<th>Сумма"); 378 $res=mysql_query("SELECT `id`, `name`, `data_sverki` FROM `doc_agent` ORDER BY `name`"); 379 $i=0; 380 $sum_dolga=0; 381 while($nxt=mysql_fetch_row($res)) 382 { 383 $dolg=DocCalcDolg($nxt[0],0); 384 if( (($dolg>0)&&(!$opt))|| (($dolg<0)&&($opt)) ) 385 { 386 $i++; 387 $dolg=abs($dolg); 388 $sum_dolga+=$dolg; 389 $dolg=sprintf("%0.2f",$dolg); 390 $tmpl->AddText("<tr><td>$i<td>$nxt[1]<td>$nxt[2]<td align='right'>$dolg руб."); 391 392 } 393 } 394 $tmpl->AddText("</table> 395 <p>Итого: $i должников с общей суммой долга $sum_dolga руб.<br> (".num2str($sum_dolga).")</p>"); 396 549 $otchet=new Report_Dolgi(); 550 $otchet->Run($opt); 397 551 } 398 552 else if($mode=='komplekt') … … 998 1152 $deb=$nxt[3]; 999 1153 } 1154 if($nxt[1]==18) 1155 { 1156 $pr+=$nxt[3]; 1157 $kr=$nxt[3]; 1158 } 1000 1159 1001 1160 if($f_print) … … 1131 1290 FROM `doc_list` 1132 1291 LEFT JOIN `doc_types` ON `doc_types`.`id`=`doc_list`.`type` 1133 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`" );1292 WHERE `doc_list`.`agent`='{$agent['id']}' AND `doc_list`.`ok`!='0' AND `doc_list`.`date`<='$date_end' AND `doc_list`.`type`!='3' ".$sql_add." ORDER BY `doc_list`.`date`" ); 1134 1293 while($nxt=mysql_fetch_array($res)) 1135 1294 { … … 1195 1354 $ras+=$nxt[3]; 1196 1355 $deb=$nxt[3]; 1356 } 1357 1358 if($nxt[1]==18) 1359 { 1360 if($nxt[3]>0) 1361 { 1362 $ras+=$nxt[3]; 1363 $deb=$nxt[3]; 1364 } 1365 else 1366 { 1367 $pr+=abs($nxt[3]); 1368 $kr=abs($nxt[3]); 1369 } 1197 1370 } 1198 1371 -
web/doc_sc.php
rb61b7ab ra154a55 38 38 $dir=$CONFIG['site']['location'].'/include/doc_scripts/'; 39 39 40 if(isAccess('doc_script ','view'))40 if(isAccess('doc_scripts','view')) 41 41 { 42 42 doc_menu(); -
web/docj.php
rb61b7ab ra154a55 517 517 if(!$sel) 518 518 { 519 $sql="SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`ok`, `doc_list`.`date`, `doc_list`.`altnum`, `doc_list`.`subtype`, `doc_list`.`user`, `doc_list`.`sum`, `doc_list`.`mark_del`, `doc_agent`.`name`, `users`.`name`, `doc_types`.`name`, `doc_list`.`p_doc`, `doc_list`.`kassa`, `doc_list`.`bank`, `doc_list`.`sklad` 519 $sql="SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`ok`, `doc_list`.`date`, `doc_list`.`altnum`, `doc_list`.`subtype`, `doc_list`.`user`, `doc_list`.`sum`, `doc_list`.`mark_del`, `doc_agent`.`name`, `users`.`name`, `doc_types`.`name`, `doc_list`.`p_doc`, `doc_list`.`kassa`, `doc_list`.`bank`, `doc_list`.`sklad`, `doc_list`.`err_flag` 520 520 FROM `doc_list` 521 521 LEFT JOIN `doc_agent` ON `doc_list`.`agent`=`doc_agent`.`id` … … 527 527 else 528 528 { 529 $sql="SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`ok`, `doc_list`.`date`, `doc_list`.`altnum`, `doc_list`.`subtype`, `doc_list`.`user`, `doc_list`.`sum`, `doc_list`.`mark_del`, `doc_agent`.`name`, `users`.`name`, `doc_types`.`name`, `doc_list`.`p_doc`, `doc_list_pos`.`cnt`, `doc_list_pos`.`cost`, `doc_list`.`kassa`, `doc_list`.`bank`, `doc_list`.`sklad` 529 $sql="SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`ok`, `doc_list`.`date`, `doc_list`.`altnum`, `doc_list`.`subtype`, `doc_list`.`user`, `doc_list`.`sum`, `doc_list`.`mark_del`, `doc_agent`.`name`, `users`.`name`, `doc_types`.`name`, `doc_list`.`p_doc`, `doc_list_pos`.`cnt`, `doc_list_pos`.`cost`, `doc_list`.`kassa`, `doc_list`.`bank`, `doc_list`.`sklad`, `doc_list`.`err_flag` 530 530 FROM `doc_list` 531 531 LEFT JOIN `doc_agent` ON `doc_list`.`agent`=`doc_agent`.`id` … … 574 574 switch($nxt['type']) 575 575 { 576 case '1': 577 case '2': 578 case '3': 579 case '8': 580 case '12': 581 case '15': 576 case 1: 577 case 2: 578 case 3: 579 case 8: 580 case 12: 581 case 15: 582 case 17: 582 583 { 583 584 $r=mysql_query("SELECT `id`, `name` FROM `doc_sklady` WHERE `id`='{$nxt['sklad']}'"); … … 585 586 $dop="Склад: $data[1] /$data[0]"; 586 587 } break; 587 case '4':588 case '5':588 case 4: 589 case 5: 589 590 { 590 591 $r=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `num`='{$nxt['bank']}' AND `ids`='bank'"); … … 592 593 $dop="Банк: $data[1] /$data[0]"; 593 594 } break; 594 case '6':595 case '7':596 case '9':595 case 6: 596 case 7: 597 case 9: 597 598 { 598 599 $r=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `num`='{$nxt['kassa']}' AND `ids`='kassa'"); … … 600 601 $dop="Касса: $data[1] /$data[0]"; 601 602 } break; 602 case '10': 603 case '11': 604 case '13': 605 case '14': 603 case 10: 604 case 11: 605 case 13: 606 case 14: 607 break; 608 606 609 } 607 610 … … 613 616 else if($nxt[1]==4) $pr+=$nxt[7]; 614 617 else if($nxt[1]==5) $ras+=$nxt[7]; 615 else if($nxt[1]==6) $pr+=$nxt[7]; 616 else if($nxt[1]==7) $ras+=$nxt[7]; 618 else if($nxt[1]==6) $pr+=$nxt[7]; 619 else if($nxt[1]==7) $ras+=$nxt[7]; 620 else if($nxt[1]==18) $ras+=$nxt[7]; 617 621 } 618 622 … … 656 660 $dp="<td>$nxt[13]<td>$nxt[14]<td>$sm"; 657 661 } 658 else if($nxt[8]) $motions="<a href='' title='На удаление' onclick=\"EditThis('/docj.php?mode=undel&_id=$nxt[0]','mo$nxt[0]'); return false;\"><img src='/img/i_alert.png' alt='На удаление'></a>"; 662 663 if($nxt[8]) $motions="<a href='' title='На удаление' onclick=\"EditThis('/docj.php?mode=undel&_id=$nxt[0]','mo$nxt[0]'); return false;\"><img src='/img/i_alert.png' alt='На удаление'></a>"; 659 664 if($nxt[2]) $motions.=" <img src='/img/i_suc.png' alt='Проведен'>"; 660 665 if(!$motions) $motions="<a href='' title='Удалить' onclick=\"EditThis('/docj.php?mode=del&_id=$nxt[0]','mo$nxt[0]'); return false;\"> <img src='/img/i_del.png' alt='Удалить'></a>"; … … 667 672 668 673 // Подсветка site 669 if($nxt[5]=='site') $cc.=' f_green'; 674 if($nxt['err_flag']) $cc.=' f_red'; 675 else if($nxt[5]=='site') $cc.=' f_green'; 670 676 671 677 … … 688 694 689 695 $tmpl->AddText("Итого: приход: $pr, расход: $ras. Баланс: $razn<br> 690 Легенда:<span class='f_green'>Оплачено</span>, <span class='f_red'>Не оплачено</span>, <span class='f_brown'>Частично оплачено</span>, <span class='f_purple'>Переплата</span>696 <b>Легенда</b>: строка - <span class='f_green'>с сайта</span>, <span class='f_red'>с ошибкой</span>, номер - <span class='f_green'>Оплачено</span>, <span class='f_red'>Не оплачено</span>, <span class='f_brown'>Частично оплачено</span>, <span class='f_purple'>Переплата</span> 691 697 "); 692 698 -
web/include/doc.nulltype.php
rb61b7ab ra154a55 77 77 public function getDopData() {return $this->dop_data;} 78 78 79 public function SetDocData($name, $value) 80 { 81 if($this->doc) 82 { 83 $_name=mysql_real_escape_string($name); 84 $_value=mysql_real_escape_string($value); 85 mysql_query("UPDATE `doc_list` SET `$_name`='$_value' WHERE `id`='{$this->doc}'"); 86 if(mysql_errno()) throw new MysqlException("Не удалось сохранить основной параметр документа"); 87 } 88 $this->doc_data[$name]=$value; 89 } 90 91 public function SetDopData($name, $value) 92 { 93 if($this->doc) 94 { 95 $_name=mysql_real_escape_string($name); 96 $_value=mysql_real_escape_string($value); 97 mysql_query("REPLACE INTO `doc_dopdata` (`doc`,`param`,`value`) VALUES ( '{$this->doc}' ,'$_name','$_value')"); 98 if(mysql_errno()) throw new MysqlException("Не удалось сохранить дополнительный параметр документа"); 99 } 100 $this->dop_data[$name]=$value; 101 } 102 79 103 // Создать документ с заданными данными 80 104 public function Create($doc_data, $from='') … … 117 141 $doc_data['p_doc']=$doc_obj->doc; 118 142 $this->Create($doc_data); 119 if($this->sklad_editor_enable)120 {121 $res=mysql_query("SELECT `tovar`, `cnt`, `cost`, `page` FROM `doc_list_pos` WHERE `doc`='{$doc_obj->doc}'");122 if(mysql_errno()) throw new MysqlException("Не удалось выбрать номенклатуру!");123 while($nxt=mysql_fetch_row($res))124 {125 mysql_query("INSERT INTO `doc_list_pos` (`doc`, `tovar`, `cnt`, `cost`, `page`)126 VALUES ('{$this->doc}', '$nxt[1]', '$nxt[2]', '$nxt[3]', '$nxt[4]')");127 if(mysql_errno()) throw new MysqlException("Не удалось сохранить номенклатуру!");128 }129 $this->doc_data['sum']=DocSumUpdate($this->doc);130 }131 143 return $this->doc; 132 144 } 133 145 // Создать документ с товарными остатками на основе другого документа 134 public function Create RemFrom($doc_obj)146 public function CreateFromP($doc_obj) 135 147 { 136 148 $doc_data=$doc_obj->doc_data; … … 144 156 { 145 157 mysql_query("INSERT INTO `doc_list_pos` (`doc`, `tovar`, `cnt`, `cost`, `page`) 146 VALUES ('{$this->doc}', '$nxt[ 1]', '$nxt[2]', '$nxt[3]', '$nxt[4]')");158 VALUES ('{$this->doc}', '$nxt[0]', '$nxt[1]', '$nxt[2]', '$nxt[3]')"); 147 159 if(mysql_errno()) throw new MysqlException("Не удалось сохранить номенклатуру!"); 148 160 } … … 381 393 if(method_exists($this,'DocApply')) $this->DocApply($silent); 382 394 else throw new Exception("Метод проведения данного документа не определён!"); 395 mysql_query("UPDATE `doc_list` SET `err_flag`='0' WHERE `id`='{$this->doc}'"); 383 396 } 384 397 catch(MysqlException $e) … … 429 442 if(method_exists($this,'DocApply')) $this->DocApply(0); 430 443 else throw new Exception("Метод проведения данного документа не определён!"); 444 mysql_query("UPDATE `doc_list` SET `err_flag`='0' WHERE `id`='{$this->doc}'"); 431 445 } 432 446 catch(MysqlException $e) … … 472 486 if(method_exists($this,'DocCancel')) $this->DocCancel(); 473 487 else throw new Exception("Метод отмены данного документа не определён!"); 488 mysql_query("UPDATE `doc_list` SET `err_flag`='0' WHERE `id`='{$this->doc}'"); 474 489 } 475 490 catch(MysqlException $e) … … 535 550 { 536 551 doc_log("FORCE CANCEL {$this->doc_name}",'', 'doc', $this->doc); 537 $res=mysql_query("UPDATE `doc_list` SET `ok`='0' WHERE `id`='{$this->doc}'"); 552 $res=mysql_query("UPDATE `doc_list` SET `ok`='0', `err_flag`='1' WHERE `id`='{$this->doc}'"); 553 if(mysql_errno()) throw new MysqlException("Не удалось установить флаги!"); 538 554 $tmpl->msg("Всё, сделано.","err","Снятие отметки проведения"); 539 555 } -
web/include/doc.peremeshenie.php
rb61b7ab ra154a55 137 137 mysql_query("UPDATE `doc_base_cnt` SET `cnt`=`cnt`+'$nxt[1]' WHERE `id`='$nxt[0]' AND `sklad`='$nx[3]'"); 138 138 if(mysql_error()) throw new Exception("Ошибка проведения, ошибка изменения количества на складе $nx[3]!"); 139 // Если это первое поступление ????????????????? НАФИГА ЭТО?140 // if(mysql_affected_rows()==0) mysql_query("INSERT INTO `doc_base_cnt` (`id`, `sklad`, `cnt`)141 // VALUES ('$nxt[0]', '$nx[3]', '$nxt[1]')");142 139 } 143 140 } -
web/include/doc.poseditor.php
rb61b7ab ra154a55 357 357 $add=0; 358 358 $ret=''; 359 360 if(!$pos) throw new Exception("ID позиции не задан!"); 359 361 360 362 $res=mysql_query("SELECT `id`, `tovar`, `cnt`, `cost` FROM `doc_list_pos` WHERE `doc`='{$this->doc}' AND `tovar`='$pos'"); -
web/include/doc.postuplenie.php
rb61b7ab ra154a55 58 58 } 59 59 60 p rotectedfunction DocApply($silent=0)60 public function DocApply($silent=0) 61 61 { 62 62 global $tmpl, $uid, $CONFIG; -
web/include/doc.realizaciya.php
rb61b7ab ra154a55 214 214 <div onclick=\"window.location='/doc.php?mode=print&doc={$this->doc}&opt=tg12_pdf'\">Форма ТОРГ-12 (PDF)</div> 215 215 <div onclick=\"window.location='/doc.php?mode=print&doc={$this->doc}&opt=sf_pdf'\">Счёт - фактура (PDF)</div> 216 <div onclick=\"ShowPopupWin('/doc.php?mode=print&doc=$doc&opt=sf_email'); return false;\">Счёт - фактура по e-mail</div>"); 216 <div onclick=\"ShowPopupWin('/doc.php?mode=print&doc=$doc&opt=sf_email'); return false;\">Счёт - фактура по e-mail</div> 217 <div onclick=\"window.location='/doc.php?mode=print&doc={$this->doc}&opt=nvco'\">Накладная c сорт. по коду</div> "); 217 218 } 218 219 // <li><a href='?mode=print&doc=$doc&opt=sf'>Счёт - фактура (HTML)</a></li> … … 242 243 else if($opt=='tc') 243 244 $this->PrintTovCheck($doc); 245 else if($opt=='nvco') 246 $this->PrintNaklVCOrdered(); 244 247 else 245 248 $this->PrintNakl($doc); … … 448 451 <p>Покупатель: ____________________________________</p>"); 449 452 } 453 454 // -- Накладная с сортировкой по коду-------------- 455 function PrintNaklVCOrdered() 456 { 457 global $tmpl; 458 global $uid; 459 460 $tmpl->LoadTemplate('print'); 461 $dt=date("d.m.Y",$this->doc_data[5]); 462 463 $tmpl->AddText("<h1>Накладная N {$this->doc_data[9]}{$this->doc_data[10]}, от $dt </h1> 464 <b>Поставщик: </b>{$this->firm_vars['firm_name']}<br> 465 <b>Покупатель: </b>{$this->doc_data[3]}<br><br>"); 466 467 $tmpl->AddText(" 468 <table width=800 cellspacing=0 cellpadding=0> 469 <tr><th>№</th><th>Код</th><th width=450>Наименование<th>Место<th>Кол-во<th>Стоимость<th>Сумма</tr>"); 470 $res=mysql_query("SELECT `doc_group`.`printname`, `doc_base`.`name`, `doc_base`.`proizv`, `doc_list_pos`.`cnt`, `doc_list_pos`.`cost`, `doc_base_cnt`.`mesto`, `doc_units`.`printname` AS `units`, `doc_base`.`vc` 471 FROM `doc_list_pos` 472 LEFT JOIN `doc_base` ON `doc_list_pos`.`tovar`=`doc_base`.`id` 473 LEFT JOIN `doc_group` ON `doc_group`.`id`=`doc_base`.`group` 474 LEFT JOIN `doc_base_cnt` ON `doc_base_cnt`.`id`=`doc_list_pos`.`tovar` AND `doc_base_cnt`.`sklad`='{$this->doc_data[7]}' 475 LEFT JOIN `doc_units` ON `doc_base`.`unit`=`doc_units`.`id` 476 WHERE `doc_list_pos`.`doc`='{$this->doc}' 477 ORDER BY `doc_base`.`vc`"); 478 $i=0; 479 $ii=1; 480 $sum=0; 481 while($nxt=mysql_fetch_row($res)) 482 { 483 $sm=$nxt[3]*$nxt[4]; 484 $cost = sprintf("%01.2f руб.", $nxt[4]); 485 $cost2 = sprintf("%01.2f руб.", $sm); 486 $tmpl->AddText("<tr align=right><td>$ii</td><td>$nxt[7]</td><td align=left>$nxt[0] $nxt[1] / $nxt[2]<td>$nxt[5]<td>$nxt[3] $nxt[6]<td>$cost<td>$cost2"); 487 $i=1-$i; 488 $ii++; 489 $sum+=$sm; 490 } 491 $ii--; 492 $cost = sprintf("%01.2f руб.", $sum); 493 494 $prop=''; 495 if($sum>0) 496 { 497 $add=''; 498 if($nxt[12]) $add=" OR (`p_doc`='{$this->doc_data['p_doc']}' AND (`type`='4' OR `type`='6'))"; 499 $rs=mysql_query("SELECT SUM(`sum`) FROM `doc_list` WHERE 500 (`p_doc`='{$this->doc}' AND (`type`='4' OR `type`='6')) 501 $add 502 AND `ok`>0 AND `p_doc`!='0' GROUP BY `p_doc`"); 503 if(@$prop=mysql_result($rs,0,0)) 504 { 505 $prop=sprintf("<p><b>Оплачено</b> %0.2f руб.</p>",$prop); 506 } 507 } 508 509 510 $tmpl->AddText("</table> 511 <p>Всего <b>$ii</b> наименований на сумму <b>$cost</b></p> 512 <p class=mini>Товар получил, претензий к качеству товара и внешнему виду не имею.</p> 513 $prop 514 <p>Поставщик:_____________________________________</p> 515 <p>Покупатель: ____________________________________</p>"); 516 } 517 450 518 451 519 // -- накладная с наценками -------------- … … 1354 1422 $y=$pdf->GetY(); 1355 1423 1356 $res=mysql_query("SELECT `doc_group`.`printname`, `doc_base`.`name`, `doc_base`.`proizv`, `doc_list_pos`.`cnt`, `doc_list_pos`.`cost`, `doc_units`.`printname`, `doc_base_dop`.`mass` 1424 $res=mysql_query("SELECT `doc_group`.`printname`, `doc_base`.`name`, `doc_base`.`proizv`, `doc_list_pos`.`cnt`, `doc_list_pos`.`cost`, `doc_units`.`printname`, `doc_base_dop`.`mass`, `doc_base`.`vc` 1357 1425 FROM `doc_list_pos` 1358 1426 LEFT JOIN `doc_base` ON `doc_list_pos`.`tovar`=`doc_base`.`id` … … 1407 1475 $str = iconv('UTF-8', 'windows-1251', "$nxt[0] $nxt[1] / $nxt[2]" ); 1408 1476 $pdf->Cell($t_all_width[1],$line_height, $str ,1,0,'L',0); 1409 $pdf->Cell($t_all_width[2],$line_height, '-' ,1,0,'C',0); 1477 $str = iconv('UTF-8', 'windows-1251', $nxt[7] ); 1478 $pdf->Cell($t_all_width[2],$line_height, $str ,1,0,'C',0); 1410 1479 $str = iconv('UTF-8', 'windows-1251', $nxt[5] ); 1411 1480 $pdf->Cell($t_all_width[3],$line_height, $str ,1,0,'C',0); -
web/include/doc.s.sklad.php
rb61b7ab ra154a55 614 614 <td>Скрытие: 615 615 <td><label><input type='checkbox' name='hid' value='3' $hid_check>Не отображать на витрине и в прайсах</label><br> 616 <label><input type='checkbox' name=' hid' value='3' $yml_check>Не экспортировать в YML</label><br>616 <label><input type='checkbox' name='no_export_yml' value='3' $yml_check>Не экспортировать в YML</label><br> 617 617 <tr class='lin0'> 618 618 <td>Печатное название: … … 803 803 { 804 804 if(!isAccess('list_sklad','create')) throw new AccessException(""); 805 $res=mysql_query("INSERT INTO `doc_base` (`name`, ` group`, `proizv`, `desc`, `cost`, `stock`, `cost_date`, `pos_type`, `hidden`, `unit`, `warranty`, `warranty_type`, `no_export_yml`)806 VALUES ('$pos_name', '$ g', '$proizv', '$desc', '$cost', '$stock', NOW() , '$pos_type', '$hid', '$unit', '$warranty', '$warranty_type', '$no_export_yml')");805 $res=mysql_query("INSERT INTO `doc_base` (`name`, `vc`, `group`, `proizv`, `desc`, `cost`, `stock`, `cost_date`, `pos_type`, `hidden`, `unit`, `warranty`, `warranty_type`, `no_export_yml`) 806 VALUES ('$pos_name', '$vc', '$g', '$proizv', '$desc', '$cost', '$stock', NOW() , '$pos_type', '$hid', '$unit', '$warranty', '$warranty_type', '$no_export_yml')"); 807 807 $opos=$pos; 808 808 $pos=mysql_insert_id(); -
web/include/doc.sborka.php
rb61b7ab ra154a55 31 31 $this->doc_viewname ='Сборка изделия'; 32 32 $this->sklad_editor_enable =true; 33 $this->sklad_modify =1;33 //$this->sklad_modify =1; 34 34 $this->header_fields ='agent cena sklad'; 35 35 settype($this->doc,'int'); 36 36 } 37 37 38 function head() 39 { 40 throw new Exception("Создание данного документа не поддерживается!"); 41 } 42 43 function body() 44 { 45 throw new Exception("Просмотр данного документа не поддерживается!"); 46 } 47 48 protected function DocApply($silent=0) 38 // function head() 39 // { 40 // throw new Exception("Создание данного документа не поддерживается!"); 41 // } 42 43 44 public function DocApply($silent=0) 49 45 { 50 46 global $tmpl; 51 47 global $uid; 52 48 $tim=time(); 53 //throw new Exception('Проведение документа не реализовано!');49 54 50 55 51 $res=mysql_query("SELECT `doc_list`.`id`, `doc_list`.`date`, `doc_list`.`type`, `doc_list`.`sklad`, `doc_list`.`ok` 56 52 FROM `doc_list` WHERE `doc_list`.`id`='{$this->doc}'"); 57 if(!$res) throw new MysqlException('Ошибка выборки данных документа при проведении!'); 58 $nx=@mysql_fetch_row($res); 59 if(!$nx) throw new Exception("Документ {$this->doc} не найден!"); 60 if( $nx[4] && (!$silent) ) throw new Exception('Документ уже был проведён!'); 61 62 63 $res=mysql_query("SELECT `doc_list_pos`.`tovar`, `doc_list_pos`.`cnt`, `doc_base`.`pos_type`, `doc_list_pos`.`page` 53 if(mysql_errno()) throw new MysqlException('Ошибка выборки данных документа при проведении!'); 54 $doc_info=mysql_fetch_array($res); 55 if(!$doc_info) throw new Exception("Документ {$this->doc} не найден!"); 56 if( $doc_info['ok'] && (!$silent) ) throw new Exception('Документ уже был проведён!'); 57 58 $res=mysql_query("SELECT `doc_list_pos`.`tovar`, `doc_list_pos`.`cnt`, `doc_base_cnt`.`cnt` AS `sklad_cnt`, `doc_base`.`name`, `doc_base`.`proizv`, `doc_base`.`pos_type`, `doc_list_pos`.`id` 64 59 FROM `doc_list_pos` 65 60 LEFT JOIN `doc_base` ON `doc_base`.`id`=`doc_list_pos`.`tovar` 61 LEFT JOIN `doc_base_cnt` ON `doc_base_cnt`.`id`=`doc_base`.`id` AND `doc_base_cnt`.`sklad`='{$doc_info['sklad']}' 66 62 WHERE `doc_list_pos`.`doc`='{$this->doc}' AND `doc_base`.`pos_type`='0'"); 67 if(!$res) throw new MysqlException('Ошибка выборки номенклатуры документа при проведении!'); 68 while($nxt=mysql_fetch_row($res)) 69 { 70 $sign=$nxt[3]?'-':'+'; 63 64 if(mysql_errno()) throw new MysqlException('Ошибка выборки номенклатуры документа при проведении!'); 65 while($doc_line=mysql_fetch_array($res)) 66 { 67 $sign=$doc_line['page']?'-':'+'; 71 68 72 $rs=mysql_query("UPDATE `doc_base_cnt` SET `cnt`=`cnt` $sign '$nxt[1]' WHERE `id`='$nxt[0]' AND `sklad`='$nx[3]'"); 73 if(!$rs) throw new MysqlException("Ошибка изменения количества товара $nxt[0] ($nxt[1]) на складе $nx[3] при проведении!"); 69 if($doc_line['page']) 70 { 71 if($doc_line[1]>$doc_line[2]) throw new Exception("Недостаточно ($doc_line[1]) товара '$doc_line[3]:$doc_line[4]($doc_line[0])': на складе только $doc_line[2] шт!"); 72 if(!$silent) 73 { 74 $budet=CheckMinus($doc_line[0], $doc_info['sklad']); 75 if( $budet<0) throw new Exception("Невозможно ($silent), т.к. будет недостаточно ($budet) товара '$doc_line[3]:$doc_line[4]($doc_line[0])'!"); 76 } 77 } 78 79 $r=mysql_query("UPDATE `doc_base_cnt` SET `cnt`=`cnt` $sign '{$doc_line['cnt']}' WHERE `id`='{$doc_line['tovar']}' AND `sklad`='{$doc_info['sklad']}'"); 80 if(!$r) throw new MysqlException("S1 Ошибка изменения количества товара $doc_line[0] ($doc_line[1]) на складе $doc_info[3] при проведении!"); 74 81 // Если это первое поступление 75 82 if(mysql_affected_rows()==0) 76 83 { 77 $rs=mysql_query("INSERT INTO `doc_base_cnt` (`id`, `sklad`, `cnt`) VALUES ('$ nxt[0]', '$nx[3]', '$nxt[1]')");78 if(!$rs) throw new MysqlException(" Ошибка записи количества товара $nxt[0] ($nxt[1]) на складе $nx[3] при проведении!");84 $rs=mysql_query("INSERT INTO `doc_base_cnt` (`id`, `sklad`, `cnt`) VALUES ('$doc_line[0]', '$doc_info[3]', '{$doc_line['cnt']}')"); 85 if(!$rs) throw new MysqlException("S2 Ошибка записи количества товара $doc_line[0] ({$doc_line['cnt']}) на складе $doc_info[3] при проведении!"); 79 86 } 80 87 } 81 88 if($silent) return; 82 $res=mysql_query("UPDATE `doc_list` SET `ok`='$tim', `sum`='0' WHERE `id`='{$this->doc}'"); 83 if(!$res) throw new MysqlException('Ошибка установки даты проведения документа!'); 89 mysql_query("UPDATE `doc_list` SET `ok`='$tim', `sum`='0' WHERE `id`='{$this->doc}'"); 90 if(mysql_errno()) throw new MysqlException('Ошибка установки даты проведения документа!'); 91 84 92 } 85 93 -
web/include/doc.sklad.kompl.php
rb61b7ab ra154a55 76 76 $item="<a href='' title='$nxt[2]' onclick=\"EditThis('/docs.php?l=sklad&mode=srv&opt=ep¶m=k&pos=1&plm=sg&group=$nxt[0]&pos=$pos','sklad'); return false;\" >$nxt[1]</a>"; 77 77 if($i>=($cnt-1)) $r.=" IsLast"; 78 $tmp=kompl_draw_group_level($ doc,$nxt[0]); // рекурсия78 $tmp=kompl_draw_group_level($pos,$nxt[0]); // рекурсия 79 79 if($tmp) 80 80 $ret.="<li class='Node ExpandClosed $r'><div class='Expand'></div><div class='Content'>$item</div><ul class='Container'>".$tmp.'</ul></li>'; … … 91 91 global $tmpl; 92 92 $tmpl->AddText("<div onclick='tree_toggle(arguments[0])'> 93 <div><a href='' title='$nxt[2]' onclick=\"EditThis('/docs.php?l=sklad&mode=srv&opt=ep¶m=k&p os=1&plm=sg&group=0&pos=$pos','sklad'); return false;\">Группы</a></div>93 <div><a href='' title='$nxt[2]' onclick=\"EditThis('/docs.php?l=sklad&mode=srv&opt=ep¶m=k&plm=sg&group=0&pos=$pos','sklad'); return false;\">Группы</a></div> 94 94 <ul class='Container'>".kompl_draw_group_level($pos,0)."</ul></div> 95 Или отбор:<input type=text id=sklsearch onkeydown=\"DelayedSave('/doc .s.sklad.php?mode=srv&opt=sklad&pos=$pos','sklad', 'sklsearch'); return true;\">");95 Или отбор:<input type=text id=sklsearch onkeydown=\"DelayedSave('/docs.php?mode=srv&opt=ep¶m=k&pos=$pos','sklad', 'sklsearch'); return true;\">"); 96 96 97 97 } … … 173 173 global $tmpl; 174 174 $sf=0; 175 $tmpl->AddText("<b>Показаны наименования изо всех групп!</b><br>"); 175 $tmpl->ajax=1; 176 $tmpl->SetText("<b>Показаны наименования изо всех групп!</b><br>"); 176 177 $tmpl->AddText("<table width=100% cellspacing=1 cellpadding=2><tr> 177 178 <th>№<th>Наименование<th>Производитель<th>Цена, р.<th>Ликв.<th>Р.цена, р.<th>Аналог<th>Тип<th>d<th>D<th>B -
web/include/doc.tovary.php
rb61b7ab ra154a55 335 335 { 336 336 $cnt=0; 337 $res=mysql_query("SELECT `doc_list_pos`.`cnt`, `doc_list`.`type`, `doc_list`.`sklad`, `doc_list`.`id` FROM `doc_list_pos`337 $res=mysql_query("SELECT `doc_list_pos`.`cnt`, `doc_list`.`type`, `doc_list`.`sklad`, `doc_list`.`id`, `doc_list_pos`.`page` FROM `doc_list_pos` 338 338 LEFT JOIN `doc_list` ON `doc_list`.`id`=`doc_list_pos`.`doc` 339 339 WHERE `doc_list`.`ok`>'0' AND `doc_list_pos`.`tovar`='$pos' … … 364 364 else if($nxt[1]==17) 365 365 { 366 if($nxt[2]==$sklad) $cnt-=$nxt[0]; 367 else 366 if($nxt[2]==$sklad) 368 367 { 369 $rr=mysql_query("SELECT `value` FROM `doc_dopdata` WHERE `doc`='$nxt[3]' AND `param`='na_sklad'"); 370 if(mysql_errno()) throw new MysqlExceprion("Не удалось запросить склад назначения в перемещении $nxt[3] при проверке на отрицательные остатки"); 371 $nasklad=mysql_result($rr,0,0); 372 if(!$nasklad) throw new Exceprion("Не удалось получить склад назначения в перемещении $nxt[3] при проверке на отрицательные остатки"); 373 if($nasklad==$sklad) $cnt+=$nxt[0]; 368 if($nxt[4]==0) $cnt+=$nxt[0]; 369 else $cnt+=$nxt[0]; 374 370 } 375 371 } -
web/include/doc_scripts/sborka_zap.php
rb61b7ab ra154a55 104 104 if(mysql_num_rows($rs)) 105 105 { 106 $zp= mysql_result($rs,0,1);106 $zp=sprintf("%0.2f", mysql_result($rs,0,1)); 107 107 } 108 108 else $zp='НЕТ'; … … 143 143 if(mysql_num_rows($rs)) 144 144 { 145 $zp= mysql_result($rs,0,1);145 $zp=sprintf("%0.2f", mysql_result($rs,0,1)); 146 146 } 147 147 else $zp='НЕТ'; … … 202 202 if(mysql_num_rows($rs)) 203 203 { 204 $zp= mysql_result($rs,0,1);204 $zp=sprintf("%0.2f", mysql_result($rs,0,1)); 205 205 } 206 206 else … … 259 259 <input type='hidden' name='tov_id' id='tov_id' value=''> 260 260 <input type='text' id='tov' style='width: 400px;' value=''><br> 261 Переместить готовый товар на склад:<br> 262 <select name='nasklad'> 263 <option value='0' selected>--не требуется--</option>"); 264 $res=mysql_query("SELECT `id`,`name` FROM `doc_sklady` ORDER BY `id`"); 265 while($nxt=mysql_fetch_row($res)) 266 { 267 $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>"); 268 } 269 $tmpl->AddText("</select><br> 270 261 271 <script type=\"text/javascript\"> 262 272 $(document).ready(function(){ … … 329 339 $agent=rcv('agent'); 330 340 $sklad=rcv('sklad'); 341 $nasklad=rcv('nasklad'); 331 342 $firm=rcv('firm'); 332 343 $tov_id=rcv('tov_id'); … … 337 348 $doc=mysql_insert_id(); 338 349 mysql_query("REPLACE INTO `doc_dopdata` (`doc`,`param`,`value`) VALUES ('$doc','cena','1')"); 339 header("Location: /doc_sc.php?mode=edit&sn=sborka_zap&doc=$doc&tov_id=$tov_id&agent=$agent&sklad=$sklad&firm=$firm ");350 header("Location: /doc_sc.php?mode=edit&sn=sborka_zap&doc=$doc&tov_id=$tov_id&agent=$agent&sklad=$sklad&firm=$firm&nasklad=$nasklad"); 340 351 } 341 352 else if($mode=='edit') … … 346 357 $sklad=rcv('sklad'); 347 358 $firm=rcv('firm'); 359 $nasklad=rcv('nasklad'); 348 360 $this->ReCalcPosCost($doc,$tov_id); 349 361 $zp=$this->CalcZP($doc); 350 362 $tmpl->AddText("<h1>".$this->getname()."</h1> 351 363 Необходимо выбрать товары, которые будут скомплектованы. Устанавливать цену не требуется - при проведении документа она будет выставлена автоматически исходя из стоимости затраченных ресурсов. Для того, чтобы узнать цены - обновите страницу. После выполнения сценария выбранные товары будут оприходованы на склад, а соответствующее им количество ресурсов, использованных для сборки, будет списано. Попытка провести через этот сценарий товары, не содержащие ресурсов, вызовет ошибку. Если это указано в свойствах товара, от агента-сборщика будет оприходована выбранная услуга для последующей выдачи заработной платы (на данный момент в размере $zp руб.).<br> 352 <a href='/doc_sc.php?mode=exec&sn=sborka_zap&doc=$doc&tov_id=$tov_id&agent=$agent&sklad=$sklad&firm=$firm '>Выполнить необходимые действия</a>364 <a href='/doc_sc.php?mode=exec&sn=sborka_zap&doc=$doc&tov_id=$tov_id&agent=$agent&sklad=$sklad&firm=$firm&nasklad=$nasklad'>Выполнить необходимые действия</a> 353 365 <script type='text/javascript' src='/css/jquery/jquery.autocomplete.js'></script>"); 354 366 … … 369 381 $sklad=rcv('sklad'); 370 382 $firm=rcv('firm'); 383 $nasklad=rcv('nasklad'); 371 384 $this->ReCalcPosCost($doc,$tov_id); 372 385 $document=AutoDocument($doc); 373 $document-> ApplyJson();386 $document->DocApply(); 374 387 $zp=$this->CalcZP($doc); 375 388 $tim=time(); … … 381 394 if(mysql_errno()) throw new MysqlException("Не удалось добавить услугу"); 382 395 $document2=AutoDocument($doc2); 383 $document2-> ApplyJson();396 $document2->DocApply(); 384 397 mysql_query("UPDATE `doc_list` SET `sum`='$zp' WHERE `id`='$doc2'"); 398 399 if( ($sklad!=$nasklad) && $nasklad) 400 { 401 $perem_doc=new doc_Peremeshenie(); 402 $perem_doc->CreateFrom($document); 403 $perem_doc->SetDopData('na_sklad',$nasklad); 404 $docnum=$perem_doc->getDocNum(); 405 $res=mysql_query("SELECT `tovar`, `cnt`, `cost` FROM `doc_list_pos` WHERE `doc`='$doc' AND `page`='0'"); 406 if(mysql_errno()) throw new MysqlException("Не удалось выбрать номенклатуру!"); 407 while($nxt=mysql_fetch_row($res)) 408 { 409 mysql_query("INSERT INTO `doc_list_pos` (`doc`, `tovar`, `cnt`, `cost`, `page`) 410 VALUES ('$docnum', '$nxt[0]', '$nxt[1]', '$nxt[2]', '$nxt[3]')"); 411 if(mysql_errno()) throw new MysqlException("Не удалось сохранить номенклатуру!"); 412 } 413 $perem_doc->DocApply(); 414 } 415 385 416 $tmpl->ajax=0; 386 417 $tmpl->msg("Все операции выполнены успешно. Размер зарплаты: $zp"); … … 415 446 else if($opt=='jadd') 416 447 { 417 if(!isAccess('doc_ '.$this->doc_name,'edit')) throw new AccessException("Недостаточно привилегий");448 if(!isAccess('doc_sborka','edit')) throw new AccessException("Недостаточно привилегий"); 418 449 $pos=rcv('pos'); 419 450 $tmpl->SetText($poseditor->AddPos($pos)); … … 422 453 else if($opt=='jdel') 423 454 { 424 if(!isAccess('doc_ '.$this->doc_name,'edit')) throw new AccessException("Недостаточно привилегий");455 if(!isAccess('doc_sborka','edit')) throw new AccessException("Недостаточно привилегий"); 425 456 $line_id=rcv('line_id'); 426 457 $tmpl->SetText($poseditor->Removeline($line_id)); … … 429 460 else if($opt=='jup') 430 461 { 431 if(!isAccess('doc_ '.$this->doc_name,'edit')) throw new AccessException("Недостаточно привилегий");462 if(!isAccess('doc_sborka','edit')) throw new AccessException("Недостаточно привилегий"); 432 463 $line_id=rcv('line_id'); 433 464 $value=rcv('value'); … … 467 498 WHERE `doc`='$doc' AND `page`='0'"); 468 499 if(mysql_errno()) throw new MysqlException("Не удалось получить список товаров документа"); 500 469 501 while($nxt=mysql_fetch_row($res)) 470 502 { … … 477 509 while($nx=mysql_fetch_row($rs)) 478 510 { 479 $acp=GetInCost($nx t[1]);511 $acp=GetInCost($nx[0]); 480 512 if($acp>0) $cost+=$nx[1]*$acp; 481 else $cost+=$nx[1]*$nx[2]; 513 else 514 $cost+=$nx[1]*$nx[2]; 482 515 $cntc=$nxt[2]*$nx[1]; 483 if($acp>0) mysql_query("INSERT INTO `doc_list_pos` (`doc`, `tovar`, `cnt`, `cost`, `page`) VALUES ('$doc', '$nx[0]', '$cntc', '$nx[2]', '$nxt[1]')"); 484 else mysql_query("INSERT INTO `doc_list_pos` (`doc`, `tovar`, `cnt`, `cost`, `page`) VALUES ('$doc', '$nx[0]', '$cntc', '$acp', '$nxt[1]')"); 516 if($acp>0) mysql_query("INSERT INTO `doc_list_pos` (`doc`, `tovar`, `cnt`, `cost`, `page`) VALUES ('$doc', '$nx[0]', '$cntc', '$acp', '$nxt[1]')"); 517 else 518 mysql_query("INSERT INTO `doc_list_pos` (`doc`, `tovar`, `cnt`, `cost`, `page`) VALUES ('$doc', '$nx[0]', '$cntc', '$nx[2]', '$nxt[1]')"); 485 519 if(mysql_errno()) throw new MysqlException("Не удалось добавить ресурс в документ"); 486 520 } … … 502 536 mysql_query("UPDATE `doc_list_pos` SET `cost`='$cost' WHERE `id`='$nxt[0]'"); 503 537 } 538 DocSumUpdate($doc); 504 539 } 505 540
Note: See TracChangeset
for help on using the changeset viewer.