1
Changeset 688638b – MultiMag

Changeset 688638b


Ignore:
Timestamp:
Jan 16, 2013, 5:41:00 PM (10 years ago)
Author:
blacklight <blacklight@…>
Branches:
master
Children:
360843c
Parents:
0a26d8c
Message:
  • Добавлена документация на код некоторых функций
  • Возобновлена разработка модуля *зарплата с продаж*
  • В загрузчике прайс листов убрано искуственное ограничение на размер файла
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • config_site.sample.php

    r0a26d8c r688638b  
    99                                                        // false по умолчанию
    1010$CONFIG['site']['pass_type']            = 'CRYPT';      // Варианты: CRYPT (по умолчанию), MD5, SHA1. CRYPT обеспечивает самое надёжное хранение паролей
    11                                                        
     11
    1212
    1313// Настройки прайса
     
    7070$CONFIG['images']['quality']            = 70;   // Качество (по уровню сжатия) изображений
    7171
    72 $CONFIG['noify']['comments']            = true; // Оповещать о коментариях
     72$CONFIG['notify']['comments']           = true; // Оповещать о коментариях
    7373
    7474/// Не включайте не настроенные способы оплаты !
     
    8989$CONFIG['gpb']['callback_pass'] = '';
    9090
     91$CONFIG['doc_scripts']['zp_s_prodaj.coeff']=    0.05;   // Коэффициент начислений для зарплаты с продаж
     92
    9193// Параметры для кредита *русский стандарт*
    9294$CONFIG['credit_brs']['address']= 'https://anketa.bank.rs.ru/minipotreb.php';
  • web/include/doc.core.php

    r0a26d8c r688638b  
    581581}
    582582
    583 // Расчёт баланса агента
    584 function DocCalcDolg($agent, $print=0, $firm_id=0)
    585 {
    586         global $tmpl;
     583/// Расчёт долга агента. Положительное число обозначает долг агента, отрицательное - долг перед агентом.
     584/// @param agent_id     ID агента, для которого расчитывается баланс
     585/// @param no_cache     Не брать данные расчёта из кеша
     586/// @param firm_id      ID собственной фирмы, для которой будет расчитан баланс. Если 0 - расчёт ведётся для всех фирм.
     587function DocCalcDolg($agent_id, $no_cache=0, $firm_id=0)
     588{
     589        global $tmpl, $doc_agent_dolg_cache_storage;
     590        //if(!$no_cache && isset($doc_agent_dolg_cache_storage[$agent_id]))     return $doc_agent_dolg_cache_storage[$agent_id];
     591
    587592        $dolg=0;
    588593        $sql_add=$firm_id?"AND `firm_id`='$firm_id'":'';
    589         $res=mysql_query("SELECT `type`, `sum` FROM `doc_list` WHERE `ok`>'0' AND `agent`='$agent' AND `mark_del`='0' $sql_add");
     594        $res=mysql_query("SELECT `type`, `sum` FROM `doc_list` WHERE `ok`>'0' AND `agent`='$agent_id' AND `mark_del`='0' $sql_add");
    590595        if(mysql_errno())       throw new MysqlException("Не возможно выбрать документы агента");
    591596        while($nxt=mysql_fetch_row($res))
     
    604609
    605610        $dolg=sprintf("%0.2f", $dolg);
     611        //$doc_agent_dolg_cache_storage[$agent_id]=$dolg;
    606612        return $dolg;
    607613}
    608614
    609 // Расчёт актуальной входящей цены
     615/// Расчёт актуальной входящей цены
     616/// @param pos_id       ID складского наименования, для которого производится расчёт
     617/// @param limit_date   Ограничить период расчёта указанной датой. Расчёт цены выполняется на указанную дату.
     618/// @param serv_mode    Если true - функция возвращает для улуг их базовую цену. Иначе возвращает 0.
    610619function GetInCost($pos_id, $limit_date=0, $serv_mode=0)
    611620{
     
    641650/// Используется при отмене документов, уменьшающих остатки на складе, напр. реализаций и перемещений
    642651/// TODO: Устарело. Заменить везде, где используется на getStoreCntOnDate
    643 function CheckMinus($pos, $sklad)
    644 {
    645     return getStoreCntOnDate($pos, $sklad);
    646 }
    647 
    648 // Получить количество товара на складе на заданную дату
    649 function getStoreCntOnDate($pos, $sklad, $unixtime=0, $noBreakIfMinus=0)
     652/// @sa getStoreCntOnDate
     653/// @param pos_id               ID складского наименования, для которого производится расчёт
     654/// @param sklad_id             ID склада, для которого производится расчёт
     655function CheckMinus($pos_id, $sklad_id)
     656{
     657    return getStoreCntOnDate($pos_id, $sklad_id);
     658}
     659
     660/// Получить количество товара на складе на заданную дату
     661/// @param pos_id               ID складского наименования, для которого производится расчёт
     662/// @param sklad_id             ID склада, для которого производится расчёт
     663/// @param unixtime             Дата, на которую производится расчёт в формате unixtime. Если не задан - расчитывается остаток на дату последнего документа.
     664/// @param noBreakIfMinus       Если true - расчёт не будет прерван, если на каком-то из этапов расчёта остаток станет отрицательным.
     665function getStoreCntOnDate($pos_id, $sklad_id, $unixtime=0, $noBreakIfMinus=0)
    650666{
    651667        $cnt=0;
     
    653669        $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`
    654670        LEFT JOIN `doc_list` ON `doc_list`.`id`=`doc_list_pos`.`doc`
    655         WHERE  `doc_list`.`ok`>'0' AND `doc_list_pos`.`tovar`='$pos' AND (`doc_list`.`type`=1 OR `doc_list`.`type`=2 OR `doc_list`.`type`=8 OR `doc_list`.`type`=17) $sql_add
     671        WHERE  `doc_list`.`ok`>'0' AND `doc_list_pos`.`tovar`='$pos_id' AND (`doc_list`.`type`=1 OR `doc_list`.`type`=2 OR `doc_list`.`type`=8 OR `doc_list`.`type`=17) $sql_add
    656672        ORDER BY `doc_list`.`date`");
    657         if(mysql_errno())       throw new MysqlException("Не удалось запросить список документов с товаром ID:$pos при проверке на отрицательные остатки");
     673        if(mysql_errno())       throw new MysqlException("Не удалось запросить список документов с товаром ID:$pos_id при проверке на отрицательные остатки");
    658674        while($nxt=mysql_fetch_row($res))
    659675        {
    660676                if($nxt[1]==1)
    661677                {
    662                         if($nxt[2]==$sklad)     $cnt+=$nxt[0];
     678                        if($nxt[2]==$sklad_id)  $cnt+=$nxt[0];
    663679                }
    664680                else if($nxt[1]==2)
    665681                {
    666                         if($nxt[2]==$sklad)     $cnt-=$nxt[0];
     682                        if($nxt[2]==$sklad_id)  $cnt-=$nxt[0];
    667683                }
    668684                else if($nxt[1]==8)
    669685                {
    670                         if($nxt[2]==$sklad)     $cnt-=$nxt[0];
     686                        if($nxt[2]==$sklad_id)  $cnt-=$nxt[0];
    671687                        else
    672688                        {
     
    675691                                $nasklad=mysql_result($rr,0,0);
    676692                                if(!$nasklad)           throw new Exceprion("Не удалось получить склад назначения в перемещении $nxt[3] при проверке на отрицательные остатки");
    677                                 if($nasklad==$sklad)    $cnt+=$nxt[0];
     693                                if($nasklad==$sklad_id) $cnt+=$nxt[0];
    678694                        }
    679695                }
    680696                else if($nxt[1]==17)
    681697                {
    682                         if($nxt[2]==$sklad)
     698                        if($nxt[2]==$sklad_id)
    683699                        {
    684700                                if($nxt[4]==0)  $cnt+=$nxt[0];
  • web/include/doc_scripts/zp_s_prodaj.php

    r0a26d8c r688638b  
    77function Run($mode)
    88{
    9         global $tmpl, $uid;
     9        global $tmpl, $uid, $CONFIG;
     10        if(isset($CONFIG['doc_scripts']['zp_s_prodaj.coeff']))  $this->coeff=$CONFIG['doc_scripts']['zp_s_prodaj.coeff'];
    1011        $tmpl->HideBlock('left');
    1112        if($mode=='view')
    1213        {
     14                $curdate=date("Y-m-d");
    1315                $tmpl->AddText("<h1>".$this->getname()."</h1>
    1416                <script type='text/javascript' src='/css/jquery/jquery.autocomplete.js'></script>
     17                <script src='/js/calendar.js'></script>
    1518                <form action='' method='post' enctype='multipart/form-data'>
    1619                <input type='hidden' name='mode' value='create'>
     
    2023                <input type='hidden' name='tov_id' id='tov_id' value=''>
    2124                <input type='text' id='tov'  style='width: 400px;' value=''><br>
     25                Рассчитывать с:<br>
     26                <input type='text' name='date_f' id='datepicker_f' value='$curdate'><br>
     27                По:<br>
     28                <input type='text' name='date_t' id='datepicker_t' value='$curdate'><br>
     29                Сотрудник:<br><select name='user_id'>
     30                <option value='0'>--не выбран--</option>");
     31                $res=mysql_query("SELECT `user_id`, `worker_real_name` FROM `users_worker_info` WHERE `worker`='1' ORDER BY `worker_real_name`");
     32                if(mysql_errno())       throw new MysqlException("Не удалось получить имя кладовщика");
     33                while($nxt=mysql_fetch_row($res))
     34                {
     35                        $tmpl->AddText("<option value='$nxt[0]'>$nxt[1]</option>");
     36                }
     37                $tmpl->AddText("</select><br>
     38
    2239                <script type=\"text/javascript\">
     40                initCalendar('datepicker_f',false);
     41                initCalendar('datepicker_t',false);
    2342                $(document).ready(function(){
    2443                        $(\"#tov\").autocomplete(\"/docs.php\", {
     
    3049                        matchContains:1,
    3150                        cacheLength:10,
    32                         maxItemsToShow:15,     
    33                         formatItem:tovliFormat, 
     51                        maxItemsToShow:15,
     52                        formatItem:tovliFormat,
    3453                        onItemSelect:tovselectItem,
    3554                        extraParams:{'l':'sklad','mode':'srv','opt':'ac'}
    3655                        });
    3756                });
    38                
     57
    3958                function tovliFormat (row, i, num) {
    4059                        var result = row[0] + \"<em class='qnt'>\" +
     
    4261                        return result;
    4362                }
    44                
     63
    4564                function tovselectItem(li) {
    4665                        if( li == null ) var sValue = \"Ничего не выбрано!\";
     
    4867                        else var sValue = li.selectValue;
    4968                        document.getElementById('tov_id').value=sValue;
    50                        
    51                 }
    52                 </script>               
     69
     70                }
     71                </script>
    5372                <button type='submit'>Выполнить</button>
    5473                </form>
     
    5877        {
    5978                $tov_id=rcv('tov_id');
     79                $date_f=strtotime(rcv('date_f'));
     80                $date_t=strtotime(rcv('date_t'));
     81                $user_id=$_REQUEST['user_id'];
     82                settype($user_id,'int');
     83                $sql_add='';
     84                if($user_id)    $sql_add=" AND `zlist`.`user`=$user_id";
     85
    6086                $tmpl->AddText("<h1>".$this->getname()."</h1>");
    61                 $res=mysql_query("SELECT `curlist`.`id`, `curlist`.`user`, `doc_agent`.`name` AS `agent_name`, `curlist`.`date`, `curlist`.`sum`, `curusers`.`name` AS `ruser_name`, `zlist`.`user` AS `zuser`, `zusers`.`name` AS `zuser_name`, `curlist`.`p_doc`
     87                $res=mysql_query("SELECT `curlist`.`id`, `curlist`.`user`, `doc_agent`.`name` AS `agent_name`, `curlist`.`date`, `curlist`.`sum`, `curusers`.`name` AS `ruser_name`, `zlist`.`user` AS `zuser`, `zusers`.`name` AS `zuser_name`, `curlist`.`p_doc`, `rkolist`.`sum` AS `ag_sum`, `curlist`.`agent` AS `agent_id`
    6288                FROM `doc_list` AS `curlist`
    6389                INNER JOIN `doc_agent` ON               `doc_agent`.`id`=`curlist`.`agent`
    6490                INNER JOIN `users` AS `curusers`        ON `curusers`.`id`=`curlist`.`user`
    6591                LEFT JOIN `doc_list` AS `zlist`         ON `zlist`.`id`=`curlist`.`p_doc` AND `zlist`.`type`='3'
     92                LEFT JOIN `doc_list` AS `rkolist`       ON `rkolist`.`p_doc`=`curlist`.`id` AND `rkolist`.`type`='7'
    6693                LEFT JOIN `users` AS `zusers`           ON `zusers`.`id`=`zlist`.`user`
    6794                LEFT JOIN `doc_list` AS `pay_doc`       ON `pay_doc`.`p_doc`=`curlist`.`id`
    68                 WHERE `curlist`.`ok`>'0' AND `curlist`.`type`='2' AND `curlist`.`date`>='".strtotime("2011-01-01")."'
    69                 AND `curlist`.`id` NOT IN (SELECT `doc` FROM `doc_dopdata` WHERE `param`='nzp')");
     95                WHERE `curlist`.`ok`>'0' AND `curlist`.`type`='2' AND `curlist`.`date`>='$date_f' AND `curlist`.`date`<='$date_t'
     96                AND `curlist`.`id` NOT IN (SELECT `doc` FROM `doc_dopdata` WHERE `param`='nzp') $sql_add");
    7097                echo mysql_error();
    7198                /// nsp (param) - начислена зарплата
     
    77104                <input type='hidden' name='tov_id' id='tov_id' value='$tov_id'>
    78105                <table width='100%'>
    79                 <tr><th>ID<th>Автор<th>Агент<th>Дата<th>Сумма<th>К начислению");
     106                <tr><th>ID<th>Автор<th>Агент<th>Дата<th>Сумма<th>Агентские<th>К начислению");
    80107                $i=0;
    81108                $users=array();
     
    99126                                        $users[$nxt['user']]['sum']=0;
    100127                                }
    101                        
    102                         }
     128
     129                        }
     130                        $nxt['ag_sum']=sprintf("%0.2f",$nxt['ag_sum']);
     131
    103132                        // Расчёт входящей стоимости
    104133                        $res_tov=mysql_query("SELECT `doc_list_pos`.`id`, `doc_list_pos`.`tovar`, `doc_list_pos`.`cost`, `doc_list_pos`.`cnt`
     
    109138                        {
    110139                                $incost = GetInCost($nxt_tov['tovar'], $nxt['date']);
    111                                 $nach_sum+=($nxt_tov['cost']-$incost)*$this->coeff;
    112                         }
     140                                $nach_sum+=($nxt_tov['cost']-$incost)*$this->coeff*$nxt_tov['cnt'];
     141                        }
     142                        $nach_sum-=$nxt['ag_sum']*$this->coeff;
     143                        $nach_sum=sprintf("%0.2f",$nach_sum);
    113144                        // Проверка факта оплаты
    114145                        $add='';
    115146                        if($nxt['p_doc']) $add=" OR (`p_doc`='{$nxt['p_doc']}' AND (`type`='4' OR `type`='6'))";
    116                         $rs=mysql_query("SELECT SUM(`sum`) FROM `doc_list` WHERE 
     147                        $rs=mysql_query("SELECT SUM(`sum`) FROM `doc_list` WHERE
    117148                        (`p_doc`='{$nxt['id']}' AND (`type`='4' OR `type`='6'))
    118149                        $add AND `ok`>0 AND `p_doc`!='0' GROUP BY `p_doc`");
     
    130161                        else
    131162                        {
    132                                 $cl='f_red';
    133                                 $disable='disabled';
    134                         }
    135                        
     163                                if(DocCalcDolg($nxt['agent_id'])<=0)
     164                                {
     165                                        $cl='f_green';
     166                                }
     167                                else
     168                                {
     169                                        $cl='f_red';
     170                                        $disable='disabled';
     171                                }
     172
     173                        }
     174
    136175                        $date=date("Y-m-d H:i:s", $nxt['date']);
     176
    137177                        $tmpl->AddText("<tr class='lin$i $cl'><td><a href='/doc.php?mode=body&doc={$nxt['id']}'>{$nxt['id']}</a>
    138                         <td>{$nxt['ruser_name']} / {$nxt['zuser_name']}<td>{$nxt['agent_name']} <td>$date<td>{$nxt['sum']}<td><input type='text' name='sum_doc[{$nxt['id']}]' value='$nach_sum' $disable>");
     178                        <td>{$nxt['ruser_name']} / {$nxt['zuser_name']}<td>{$nxt['agent_name']} <td>$date<td>{$nxt['sum']}<td>{$nxt['ag_sum']}<td><input type='text' name='sum_doc[{$nxt['id']}]' value='$nach_sum' $disable>");
    139179                        $i=1-$i;
    140180                        if($disable=='')
  • web/priceload.php

    r0a26d8c r688638b  
    294294                        else if($days<7)        $date_style="style='color: #d80'";
    295295                        else                    $date_style="style='color: #f00'";
    296                        
     296
    297297                        if($days<1)
    298298                        {
     
    313313                else if($udate<2)       $date='никогда';
    314314                else                    $date=date("Y-m-d", $udate);
    315                
     315
    316316                $tmpl->AddText("<tr class='lin$i pointer'><td><a href='?mode=firme&amp;id=$nxt[0]'>$nxt[0]</a>
    317317                <td>$nxt[1]<td $date_style>$date<td>$nxt[2]<td>$nxt[3], $nxt[4]<td>
     
    319319                <a href='?mode=r_parsed&amp;f=$nxt[0]'>Обработанные</a> |
    320320                <a href='?mode=r_multiparsed&amp;f=$nxt[0]'>Дублирующиеся</a>
    321                
     321
    322322                ");
    323323                $i=1-$i;
     
    347347        if(!is_uploaded_file($_FILES['file']['tmp_name']))
    348348                throw new Exception("Файл не получен. Возможно, его забыли выбрать, либо он слишком большой.");
    349         if($_FILES['file']['size']>(4000*1024))
    350                 throw new Exception("Слишком большой файл!");
    351        
     349
    352350        require_once($CONFIG['location']."/common/priceloader.xls.php");
    353351        require_once($CONFIG['location']."/common/priceloader.ods.php");
    354        
     352
    355353        $path_info = pathinfo($_FILES['file']['name']);
    356354        switch(strtolower($path_info['extension']))
     
    362360                default:        throw new Exception("Неверное расширение файла!");
    363361        }
    364        
     362
    365363        $firm_array=$loader->detectSomeFirm();
    366364        $loader->setBuildHTMLData(40);
     
    385383                firmAddForm();
    386384        }
    387        
     385
    388386//      if($firm=$loader->detectFirm())
    389387//      {
     
    403401//                      $tmpl->AddText("<h3>Загруженные данные:</h3>".$loader->getHTML());
    404402//              }
    405 // 
     403//
    406404//              firmAddForm();
    407405//      }
     
    427425                $col_name=rcv('col_name');
    428426                $col_cost=rcv('col_cost');
    429                 $col_nal=rcv('col_nal');               
     427                $col_nal=rcv('col_nal');
    430428                $col_curr=rcv('col_curr');
    431429                $col_info=rcv('col_info');
Note: See TracChangeset for help on using the changeset viewer.