1
Changeset a154a55 – MultiMag

Changeset a154a55


Ignore:
Timestamp:
Jul 13, 2011, 2:49:27 AM (12 years ago)
Author:
Blacklight <blacklight@…>
Branches:
master
Children:
7a2e7a9
Parents:
b61b7ab
Message:
  • Исправлена ошибка: не отображалась отметка *на удаление* в журнале документов в случае включенной фльтрации по наименованию
  • Новая функция: документы с ошибкой проведения отмечаются в журнале красным
  • Кол-во дней, через которое будет произведено удаление отмеченных документов, вынесено в конфигруационный файл
  • Исправлена возможность списания товара в минус при сборке
  • форма накладной с сортировкой по коду производителя
  • возможность распечатки отчёта по долгам по выбранной группе агентов
  • новая дополнительная форма кассового отчёта
  • исправлено отображение кода товара в ТОРГ-12
  • отражение суммы в документе сборки (не отображалась при создании документа сценарием)
  • исправлен поиск по складу, и отображение подгрупп в комплектующих (не работало)
  • сделано уведомление об ошибке при попытке добавить в документ наименование с ID=0
  • опция конфигруации: Кол-во дней, через которое будет произведено удаление отмеченных документов
  • создание накладной перемещения в сценарии сборки
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • cli/db_optimize.php

    rb61b7ab ra154a55  
    3434include_once($CONFIG['site']['location']."/include/doc.peremeshenie.php");
    3535include_once($CONFIG['site']['location']."/include/doc.perkas.php");
    36 
    37  
     36include_once($CONFIG['site']['location']."/include/doc.sborka.php");
     37include_once($CONFIG['site']['location']."/include/doc.kordolga.php");
     38
    3839$mail->FromName = $CONFIG['site']['name'].' - Site Service System'; 
    3940$mail->CharSet  = "UTF-8";
     
    113114
    114115// ================================ Перепроводка документов с коррекцией сумм ============================
    115 echo"Перепроводка документов...";
     116echo"Перепроводка документов...\n\n";
    116117$i=0;
    117118$res=mysql_query("UPDATE `doc_kassa` SET `ballance`='0'");
     
    127128        if($err=$document->Apply($nxt[0],1))
    128129        {
    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";
    130132                echo $text;
    131133                $mail_text.=$text;
     
    146148echo "Удаление помеченных на удаление...\n";
    147149// ============================= Удаление помеченных на удаление =========================================
    148 $tim_minus=time()-60*60*24*7;
     150$tim_minus=time()-60*60*24*$CONFIG['auto']['doc_del_days'];
    149151$res=mysql_query("SELECT `id`, `type` FROM `doc_list` WHERE `mark_del`<'$tim_minus' AND `mark_del`>'0'");
    150152while($nxt=mysql_fetch_row($res))
  • config_all.sample.php

    rb61b7ab ra154a55  
    3636$mail->Sender   = $CONFIG['site']['admin_email']; 
    3737$mail->From     = $CONFIG['site']['admin_email']; 
    38 $mail->FromName = 'Site '.$CONFIG['site']['name']; 
     38$mail->FromName = $CONFIG['site']['display_name']; 
    3939$mail->Mailer   = "mail"; 
    4040$mail->CharSet  = "UTF-8";
  • config_cli.sample.php

    rb61b7ab ra154a55  
    4343$CONFIG['auto']['user_del_days']        = 14;   // Стирать неактивных пользователей через X дней
    4444$CONFIG['auto']['move_nr_to_end']       = true; // Перемещать непроведенные реализации на последний день
     45$CONFIG['auto']['doc_del_days']         = 2;    // Стирать отмеченные на удаление документы через X дней
    4546
    4647// ======================== НИЖЕ НЕ ИСПРАВЛЯТЬ =============================
  • db_struct.sql

    rb61b7ab ra154a55  
    617617  `mark_del` bigint(20) NOT NULL,
    618618  `firm_id` int(11) NOT NULL DEFAULT '1',
     619  `err_flag` tinyint(4) NOT NULL DEFAULT '0',
    619620  UNIQUE KEY `id` (`id`),
    620621  KEY `type` (`type`),
     
    16191620(30, 'generic_news', 'Новости', 'view,create,edit,delete'),
    16201621(31, 'doc_service', 'Служебные функции', 'view'),
    1621 (32, 'doc_scropts', 'Сценарии и операции', 'view,exec'),
     1622(32, 'doc_scripts', 'Сценарии и операции', 'view,exec'),
    16221623(33, 'log', 'Системные журналы', ''),
    16231624(34, 'log_browser', 'Статистирка броузеров', 'view'),
  • web/core.php

    rb61b7ab ra154a55  
    1818//
    1919
    20 define("MULTIMAG_VERSION", "0.0.1r252");
     20define("MULTIMAG_VERSION", "0.0.1r254");
    2121header("X-Powered-By: MultiMag ".MULTIMAG_VERSION);
    2222
  • web/css/doc_script.js

    rb61b7ab ra154a55  
    102102                        else
    103103                        {
    104                                 jAlert("Документ не проведён!","Ошибка "+httpRequest.status, {}, 'icon_err');
     104                                jAlert("Документ не проведён!"+httpRequest.responseText,"Ошибка "+httpRequest.status, {}, 'icon_err');
    105105                                provodki.innerHTML=old_provodki;
    106106                        }
  • web/doc_otchet.php

    rb61b7ab ra154a55  
    3434        'doc_otchet.php?mode=sverka_op' => 'Акт сверки (оперативный)',
    3535        'doc_otchet.php?mode=balance' => 'Балланс',
    36         'doc_otchet.php?mode=dolgi' => 'Долги: партнёров',
    37         'doc_otchet.php?mode=dolgi&amp;opt=1' => 'Долги: наши',
     36        'doc_otchet.php?mode=dolgi' => 'Долги',
    3837        'doc_otchet.php?mode=kassday' => 'Кассовый отчёт за день',
     38        'doc_otchet.php?mode=kassday2' => 'Кассовый отчёт за день (2)',
    3939        'doc_otchet.php?mode=ostatki' => 'Остатки на складе',
    4040        'doc_otchet.php?mode=ostatki_d' => 'Остатки на складе на дату',
     
    5757        <a href='doc_otchet.php?mode=sverka'><div>Акт сверки</div></a>
    5858        <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&amp;opt=1'><div>Долги: наши</div></a>
     59        <a href='doc_otchet.php?mode=dolgi'><div>Долги</div></a>
    6160        <a href='doc_otchet.php?mode=kassday'><div>Кассовый отчёт за день</div></a>
     61        <a href='doc_otchet.php?mode=kassday'><div>Кассовый отчёт за день (2)</div></a>
    6262        <a href='doc_otchet.php?mode=ostatki'><div>Остатки на складе</div></a>
    6363        <a href='doc_otchet.php?mode=ostatki_d'><div>Остатки на складе на дату</div></a>
     
    255255};
    256256
     257class 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
     363class 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
    257426
    258427
     
    264433        <h3>Доступные виды отчётов</h3>
    265434        ".otch_list()."<br><br><br><br><br>");
     435}
     436else if($mode=='kassday2')
     437{
     438        $opt=rcv('opt');
     439        $otchet=new Report_KassDay2();
     440        $otchet->Run($opt);
    266441}
    267442else if($mode=='pmenu')
     
    372547{
    373548        $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);
    397551}
    398552else if($mode=='komplekt')
     
    9981152                                $deb=$nxt[3];
    9991153                        }
     1154                        if($nxt[1]==18)
     1155                        {
     1156                                $pr+=$nxt[3];
     1157                                $kr=$nxt[3];
     1158                        }
    10001159
    10011160                        if($f_print)
     
    11311290                FROM `doc_list`
    11321291                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`" );
    11341293                while($nxt=mysql_fetch_array($res))
    11351294                {
     
    11951354                                $ras+=$nxt[3];
    11961355                                $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                                }
    11971370                        }
    11981371
  • web/doc_sc.php

    rb61b7ab ra154a55  
    3838$dir=$CONFIG['site']['location'].'/include/doc_scripts/';
    3939
    40 if(isAccess('doc_script','view'))
     40if(isAccess('doc_scripts','view'))
    4141{
    4242        doc_menu();
  • web/docj.php

    rb61b7ab ra154a55  
    517517        if(!$sel)
    518518        {
    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`
    520520                FROM `doc_list`
    521521                LEFT JOIN `doc_agent` ON `doc_list`.`agent`=`doc_agent`.`id`
     
    527527        else
    528528        {
    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`
    530530                FROM `doc_list`
    531531                LEFT JOIN `doc_agent` ON `doc_list`.`agent`=`doc_agent`.`id`
     
    574574                switch($nxt['type'])
    575575                {
    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:
    582583                        {
    583584                                $r=mysql_query("SELECT `id`, `name` FROM `doc_sklady` WHERE `id`='{$nxt['sklad']}'");
     
    585586                                $dop="Склад: $data[1] /$data[0]";
    586587                        }       break;
    587                         case '4':
    588                         case '5':
     588                        case 4:
     589                        case 5:
    589590                        {
    590591                                $r=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `num`='{$nxt['bank']}' AND `ids`='bank'");
     
    592593                                $dop="Банк: $data[1] /$data[0]";
    593594                        }       break;
    594                         case '6':
    595                         case '7':
    596                         case '9':
     595                        case 6:
     596                        case 7:
     597                        case 9:
    597598                        {
    598599                                $r=mysql_query("SELECT `num`, `name` FROM `doc_kassa` WHERE `num`='{$nxt['kassa']}' AND `ids`='kassa'");
     
    600601                                $dop="Касса: $data[1] /$data[0]";
    601602                        }       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                       
    606609                }
    607610               
     
    613616                        else if($nxt[1]==4)     $pr+=$nxt[7];
    614617                        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];
    617621                }
    618622
     
    656660                        $dp="<td>$nxt[13]<td>$nxt[14]<td>$sm";
    657661                }
    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>";
    659664                if($nxt[2]) $motions.=" <img src='/img/i_suc.png' alt='Проведен'>";
    660665                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>";
     
    667672               
    668673                // Подсветка 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';
    670676               
    671677               
     
    688694
    689695        $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>
    691697        ");
    692698
  • web/include/doc.nulltype.php

    rb61b7ab ra154a55  
    7777        public function getDopData()    {return $this->dop_data;}
    7878       
     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       
    79103        // Создать документ с заданными данными
    80104        public function Create($doc_data, $from='')
     
    117141                $doc_data['p_doc']=$doc_obj->doc;
    118142                $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                 }
    131143                return $this->doc;
    132144        }
    133145        // Создать документ с товарными остатками на основе другого документа
    134         public function CreateRemFrom($doc_obj)
     146        public function CreateFromP($doc_obj)
    135147        {
    136148                $doc_data=$doc_obj->doc_data;
     
    144156                        {
    145157                                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]')");
    147159                                if(mysql_errno())       throw new MysqlException("Не удалось сохранить номенклатуру!");
    148160                        }
     
    381393                        if(method_exists($this,'DocApply'))     $this->DocApply($silent);
    382394                        else    throw new Exception("Метод проведения данного документа не определён!");
     395                        mysql_query("UPDATE `doc_list` SET `err_flag`='0' WHERE `id`='{$this->doc}'");
    383396                }
    384397                catch(MysqlException $e)
     
    429442                        if(method_exists($this,'DocApply'))     $this->DocApply(0);
    430443                        else    throw new Exception("Метод проведения данного документа не определён!");
     444                        mysql_query("UPDATE `doc_list` SET `err_flag`='0' WHERE `id`='{$this->doc}'");
    431445                }
    432446                catch(MysqlException $e)
     
    472486                        if(method_exists($this,'DocCancel'))    $this->DocCancel();
    473487                        else    throw new Exception("Метод отмены данного документа не определён!");
     488                        mysql_query("UPDATE `doc_list` SET `err_flag`='0' WHERE `id`='{$this->doc}'");
    474489                }
    475490                catch(MysqlException $e)
     
    535550                {
    536551                        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("Не удалось установить флаги!");
    538554                        $tmpl->msg("Всё, сделано.","err","Снятие отметки проведения");
    539555                }
  • web/include/doc.peremeshenie.php

    rb61b7ab ra154a55  
    137137                        mysql_query("UPDATE `doc_base_cnt` SET `cnt`=`cnt`+'$nxt[1]' WHERE `id`='$nxt[0]' AND `sklad`='$nx[3]'");
    138138                        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]')");
    142139                }
    143140        }
  • web/include/doc.poseditor.php

    rb61b7ab ra154a55  
    357357        $add=0;
    358358        $ret='';
     359       
     360        if(!$pos)       throw new Exception("ID позиции не задан!");
    359361               
    360362        $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  
    5858        }
    5959
    60         protected function DocApply($silent=0)
     60        public function DocApply($silent=0)
    6161        {
    6262                global $tmpl, $uid, $CONFIG;
  • web/include/doc.realizaciya.php

    rb61b7ab ra154a55  
    214214                        <div onclick=\"window.location='/doc.php?mode=print&amp;doc={$this->doc}&amp;opt=tg12_pdf'\">Форма ТОРГ-12 (PDF)</div>                 
    215215                        <div onclick=\"window.location='/doc.php?mode=print&amp;doc={$this->doc}&amp;opt=sf_pdf'\">Счёт - фактура (PDF)</div>                   
    216                         <div onclick=\"ShowPopupWin('/doc.php?mode=print&amp;doc=$doc&amp;opt=sf_email'); return false;\">Счёт - фактура по e-mail</div>");
     216                        <div onclick=\"ShowPopupWin('/doc.php?mode=print&amp;doc=$doc&amp;opt=sf_email'); return false;\">Счёт - фактура по e-mail</div>
     217                        <div onclick=\"window.location='/doc.php?mode=print&amp;doc={$this->doc}&amp;opt=nvco'\">Накладная c сорт. по коду</div>        ");
    217218                }
    218219                //                      <li><a href='?mode=print&amp;doc=$doc&amp;opt=sf'>Счёт - фактура (HTML)</a></li>
     
    242243                else if($opt=='tc')
    243244                        $this->PrintTovCheck($doc);
     245                else if($opt=='nvco')
     246                        $this->PrintNaklVCOrdered();
    244247                else
    245248                        $this->PrintNakl($doc);
     
    448451                <p>Покупатель: ____________________________________</p>");
    449452        }
     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
    450518       
    451519// -- накладная с наценками --------------
     
    13541422        $y=$pdf->GetY();
    13551423       
    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`
    13571425        FROM `doc_list_pos`
    13581426        LEFT JOIN `doc_base` ON `doc_list_pos`.`tovar`=`doc_base`.`id`
     
    14071475                $str = iconv('UTF-8', 'windows-1251', "$nxt[0] $nxt[1] / $nxt[2]" );
    14081476                $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);
    14101479                $str = iconv('UTF-8', 'windows-1251', $nxt[5] );
    14111480                $pdf->Cell($t_all_width[3],$line_height, $str ,1,0,'C',0);
  • web/include/doc.s.sklad.php

    rb61b7ab ra154a55  
    614614                        <td>Скрытие:
    615615                        <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>
    617617                        <tr class='lin0'>
    618618                        <td>Печатное название:
     
    803803                        {       
    804804                                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')");
    807807                                $opos=$pos;
    808808                                $pos=mysql_insert_id();
  • web/include/doc.sborka.php

    rb61b7ab ra154a55  
    3131                $this->doc_viewname                     ='Сборка изделия';
    3232                $this->sklad_editor_enable              =true;
    33                 $this->sklad_modify                     =1;
     33                //$this->sklad_modify                   =1;
    3434                $this->header_fields                    ='agent cena sklad';
    3535                settype($this->doc,'int');
    3636        }
    3737       
    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)
    4945        {
    5046                global $tmpl;
    5147                global $uid;
    5248                $tim=time();
    53                 //throw new Exception('Проведение документа не реализовано!');
     49               
    5450               
    5551                $res=mysql_query("SELECT `doc_list`.`id`, `doc_list`.`date`, `doc_list`.`type`, `doc_list`.`sklad`, `doc_list`.`ok`
    5652                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`
    6459                FROM `doc_list_pos`
    6560                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']}'
    6662                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']?'-':'+';
    7168                       
    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] при проведении!");
    7481                        // Если это первое поступление
    7582                        if(mysql_affected_rows()==0)
    7683                        {
    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] при проведении!");
    7986                        }
    8087                }
    8188                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               
    8492        }
    8593       
  • web/include/doc.sklad.kompl.php

    rb61b7ab ra154a55  
    7676                $item="<a href='' title='$nxt[2]' onclick=\"EditThis('/docs.php?l=sklad&mode=srv&opt=ep&param=k&pos=1&plm=sg&group=$nxt[0]&pos=$pos','sklad'); return false;\" >$nxt[1]</a>";
    7777                if($i>=($cnt-1)) $r.=" IsLast";
    78                 $tmp=kompl_draw_group_level($doc,$nxt[0]); // рекурсия
     78                $tmp=kompl_draw_group_level($pos,$nxt[0]); // рекурсия
    7979                if($tmp)
    8080                        $ret.="<li class='Node ExpandClosed $r'><div class='Expand'></div><div class='Content'>$item</div><ul class='Container'>".$tmp.'</ul></li>';
     
    9191        global $tmpl;
    9292        $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&param=k&pos=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&param=k&plm=sg&group=0&pos=$pos','sklad'); return false;\">Группы</a></div>
    9494        <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&param=k&pos=$pos','sklad', 'sklsearch'); return true;\">");
    9696
    9797}
     
    173173        global $tmpl;
    174174        $sf=0;
    175         $tmpl->AddText("<b>Показаны наименования изо всех групп!</b><br>");
     175        $tmpl->ajax=1;
     176        $tmpl->SetText("<b>Показаны наименования изо всех групп!</b><br>");
    176177        $tmpl->AddText("<table width=100% cellspacing=1 cellpadding=2><tr>
    177178        <th>№<th>Наименование<th>Производитель<th>Цена, р.<th>Ликв.<th>Р.цена, р.<th>Аналог<th>Тип<th>d<th>D<th>B
  • web/include/doc.tovary.php

    rb61b7ab ra154a55  
    335335{
    336336        $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`
    338338        LEFT JOIN `doc_list` ON `doc_list`.`id`=`doc_list_pos`.`doc`
    339339        WHERE  `doc_list`.`ok`>'0' AND `doc_list_pos`.`tovar`='$pos'
     
    364364                else if($nxt[1]==17)
    365365                {
    366                         if($nxt[2]==$sklad)     $cnt-=$nxt[0];
    367                         else
     366                        if($nxt[2]==$sklad)
    368367                        {
    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];
    374370                        }
    375371                }
  • web/include/doc_scripts/sborka_zap.php

    rb61b7ab ra154a55  
    104104                if(mysql_num_rows($rs))
    105105                {
    106                         $zp=mysql_result($rs,0,1);
     106                        $zp=sprintf("%0.2f", mysql_result($rs,0,1));
    107107                }
    108108                else $zp='НЕТ';
     
    143143                if(mysql_num_rows($rs))
    144144                {
    145                         $zp=mysql_result($rs,0,1);
     145                        $zp=sprintf("%0.2f", mysql_result($rs,0,1));
    146146                }
    147147                else $zp='НЕТ';
     
    202202                if(mysql_num_rows($rs))
    203203                {
    204                         $zp=mysql_result($rs,0,1);
     204                        $zp=sprintf("%0.2f", mysql_result($rs,0,1));
    205205                }
    206206                else
     
    259259                <input type='hidden' name='tov_id' id='tov_id' value=''>
    260260                <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               
    261271                <script type=\"text/javascript\">
    262272                $(document).ready(function(){
     
    329339                $agent=rcv('agent');
    330340                $sklad=rcv('sklad');
     341                $nasklad=rcv('nasklad');
    331342                $firm=rcv('firm');
    332343                $tov_id=rcv('tov_id');
     
    337348                $doc=mysql_insert_id();
    338349                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");
    340351        }
    341352        else if($mode=='edit')
     
    346357                $sklad=rcv('sklad');
    347358                $firm=rcv('firm');
     359                $nasklad=rcv('nasklad');
    348360                $this->ReCalcPosCost($doc,$tov_id);
    349361                $zp=$this->CalcZP($doc);
    350362                $tmpl->AddText("<h1>".$this->getname()."</h1>
    351363                Необходимо выбрать товары, которые будут скомплектованы. Устанавливать цену не требуется - при проведении документа она будет выставлена автоматически исходя из стоимости затраченных ресурсов. Для того, чтобы узнать цены - обновите страницу. После выполнения сценария выбранные товары будут оприходованы на склад, а соответствующее им количество ресурсов, использованных для сборки, будет списано. Попытка провести через этот сценарий товары, не содержащие ресурсов, вызовет ошибку. Если это указано в свойствах товара, от агента-сборщика будет оприходована выбранная услуга для последующей выдачи заработной платы (на данный момент в размере $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>
    353365                <script type='text/javascript' src='/css/jquery/jquery.autocomplete.js'></script>");
    354366               
     
    369381                $sklad=rcv('sklad');
    370382                $firm=rcv('firm');
     383                $nasklad=rcv('nasklad');
    371384                $this->ReCalcPosCost($doc,$tov_id);
    372385                $document=AutoDocument($doc);
    373                 $document->ApplyJson();
     386                $document->DocApply();
    374387                $zp=$this->CalcZP($doc);
    375388                $tim=time();
     
    381394                if(mysql_errno())       throw new MysqlException("Не удалось добавить услугу");
    382395                $document2=AutoDocument($doc2);
    383                 $document2->ApplyJson();
     396                $document2->DocApply();
    384397                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               
    385416                $tmpl->ajax=0;
    386417                $tmpl->msg("Все операции выполнены успешно. Размер зарплаты: $zp");
     
    415446                else if($opt=='jadd')
    416447                {
    417                         if(!isAccess('doc_'.$this->doc_name,'edit'))    throw new AccessException("Недостаточно привилегий");
     448                        if(!isAccess('doc_sborka','edit'))      throw new AccessException("Недостаточно привилегий");
    418449                        $pos=rcv('pos');
    419450                        $tmpl->SetText($poseditor->AddPos($pos));
     
    422453                else if($opt=='jdel')
    423454                {
    424                         if(!isAccess('doc_'.$this->doc_name,'edit'))    throw new AccessException("Недостаточно привилегий");
     455                        if(!isAccess('doc_sborka','edit'))      throw new AccessException("Недостаточно привилегий");
    425456                        $line_id=rcv('line_id');
    426457                        $tmpl->SetText($poseditor->Removeline($line_id));
     
    429460                else if($opt=='jup')
    430461                {
    431                         if(!isAccess('doc_'.$this->doc_name,'edit'))    throw new AccessException("Недостаточно привилегий");
     462                        if(!isAccess('doc_sborka','edit'))      throw new AccessException("Недостаточно привилегий");
    432463                        $line_id=rcv('line_id');
    433464                        $value=rcv('value');
     
    467498        WHERE `doc`='$doc' AND `page`='0'");
    468499        if(mysql_errno())       throw new MysqlException("Не удалось получить список товаров документа");
     500
    469501        while($nxt=mysql_fetch_row($res))
    470502        {
     
    477509                while($nx=mysql_fetch_row($rs))
    478510                {
    479                         $acp=GetInCost($nxt[1]);
     511                        $acp=GetInCost($nx[0]);
    480512                        if($acp>0)      $cost+=$nx[1]*$acp;
    481                         else            $cost+=$nx[1]*$nx[2];
     513                        else           
     514                        $cost+=$nx[1]*$nx[2];
    482515                        $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]')");
    485519                        if(mysql_errno())       throw new MysqlException("Не удалось добавить ресурс в документ");
    486520                }
     
    502536                mysql_query("UPDATE `doc_list_pos` SET `cost`='$cost' WHERE `id`='$nxt[0]'");
    503537        }
     538        DocSumUpdate($doc);
    504539}
    505540
Note: See TracChangeset for help on using the changeset viewer.