1
zp_s_prodaj.php in web/include/doc_scripts – MultiMag

source: web/include/doc_scripts/zp_s_prodaj.php @ 688638b

Last change on this file since 688638b was 688638b, checked in by blacklight <blacklight@…>, 10 years ago
  • Добавлена документация на код некоторых функций
  • Возобновлена разработка модуля *зарплата с продаж*
  • В загрузчике прайс листов убрано искуственное ограничение на размер файла
  • Property mode set to 100644
File size: 6.8 KB
Line 
1<?php
2
3class ds_zp_s_prodaj
4{
5        var $coeff=0.05;
6
7function Run($mode)
8{
9        global $tmpl, $uid, $CONFIG;
10        if(isset($CONFIG['doc_scripts']['zp_s_prodaj.coeff']))  $this->coeff=$CONFIG['doc_scripts']['zp_s_prodaj.coeff'];
11        $tmpl->HideBlock('left');
12        if($mode=='view')
13        {
14                $curdate=date("Y-m-d");
15                $tmpl->AddText("<h1>".$this->getname()."</h1>
16                <script type='text/javascript' src='/css/jquery/jquery.autocomplete.js'></script>
17                <script src='/js/calendar.js'></script>
18                <form action='' method='post' enctype='multipart/form-data'>
19                <input type='hidden' name='mode' value='create'>
20                <input type='hidden' name='param' value='i'>
21                <input type='hidden' name='sn' value='zp_s_prodaj'>
22                Услуга начисления зарплаты:<br>
23                <input type='hidden' name='tov_id' id='tov_id' value=''>
24                <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
39                <script type=\"text/javascript\">
40                initCalendar('datepicker_f',false);
41                initCalendar('datepicker_t',false);
42                $(document).ready(function(){
43                        $(\"#tov\").autocomplete(\"/docs.php\", {
44                        delay:300,
45                        minChars:1,
46                        matchSubset:1,
47                        autoFill:false,
48                        selectFirst:true,
49                        matchContains:1,
50                        cacheLength:10,
51                        maxItemsToShow:15,
52                        formatItem:tovliFormat,
53                        onItemSelect:tovselectItem,
54                        extraParams:{'l':'sklad','mode':'srv','opt':'ac'}
55                        });
56                });
57
58                function tovliFormat (row, i, num) {
59                        var result = row[0] + \"<em class='qnt'>\" +
60                        row[2] + \"</em> \";
61                        return result;
62                }
63
64                function tovselectItem(li) {
65                        if( li == null ) var sValue = \"Ничего не выбрано!\";
66                        if( !!li.extra ) var sValue = li.extra[0];
67                        else var sValue = li.selectValue;
68                        document.getElementById('tov_id').value=sValue;
69
70                }
71                </script>
72                <button type='submit'>Выполнить</button>
73                </form>
74                ");
75        }
76        else if($mode=='create')
77        {
78                $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
86                $tmpl->AddText("<h1>".$this->getname()."</h1>");
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`
88                FROM `doc_list` AS `curlist`
89                INNER JOIN `doc_agent` ON               `doc_agent`.`id`=`curlist`.`agent`
90                INNER JOIN `users` AS `curusers`        ON `curusers`.`id`=`curlist`.`user`
91                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'
93                LEFT JOIN `users` AS `zusers`           ON `zusers`.`id`=`zlist`.`user`
94                LEFT JOIN `doc_list` AS `pay_doc`       ON `pay_doc`.`p_doc`=`curlist`.`id`
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");
97                echo mysql_error();
98                /// nsp (param) - начислена зарплата
99                $tmpl->AddText("
100                <form action='' method='post' enctype='multipart/form-data'>
101                <input type='hidden' name='mode' value='exec'>
102                <input type='hidden' name='param' value='i'>
103                <input type='hidden' name='sn' value='zp_s_prodaj'>
104                <input type='hidden' name='tov_id' id='tov_id' value='$tov_id'>
105                <table width='100%'>
106                <tr><th>ID<th>Автор<th>Агент<th>Дата<th>Сумма<th>Агентские<th>К начислению");
107                $i=0;
108                $users=array();
109                while($nxt=mysql_fetch_assoc($res))
110                {
111                        if($nxt['zuser']>0)
112                        {
113                                if(!isset($users[$nxt['zuser']]))
114                                {
115                                        $users[$nxt['zuser']]=array();
116                                        $users[$nxt['zuser']]['name']=$nxt['zuser_name'];
117                                        $users[$nxt['zuser']]['sum']=0;
118                                }
119                        }
120                        else
121                        {
122                                if(!isset($users[$nxt['user']]))
123                                {
124                                        $users[$nxt['user']]=array();
125                                        $users[$nxt['user']]['name']=$nxt['ruser_name'];
126                                        $users[$nxt['user']]['sum']=0;
127                                }
128
129                        }
130                        $nxt['ag_sum']=sprintf("%0.2f",$nxt['ag_sum']);
131
132                        // Расчёт входящей стоимости
133                        $res_tov=mysql_query("SELECT `doc_list_pos`.`id`, `doc_list_pos`.`tovar`, `doc_list_pos`.`cost`, `doc_list_pos`.`cnt`
134                        FROM `doc_list_pos`
135                        WHERE `doc_list_pos`.`doc`='{$nxt['id']}'");
136                        $nach_sum=0;
137                        while($nxt_tov=mysql_fetch_assoc($res_tov))
138                        {
139                                $incost = GetInCost($nxt_tov['tovar'], $nxt['date']);
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);
144                        // Проверка факта оплаты
145                        $add='';
146                        if($nxt['p_doc']) $add=" OR (`p_doc`='{$nxt['p_doc']}' AND (`type`='4' OR `type`='6'))";
147                        $rs=mysql_query("SELECT SUM(`sum`) FROM `doc_list` WHERE
148                        (`p_doc`='{$nxt['id']}' AND (`type`='4' OR `type`='6'))
149                        $add AND `ok`>0 AND `p_doc`!='0' GROUP BY `p_doc`");
150                        $disable='';
151                        if(@$prop=mysql_result($rs,0,0))
152                        {
153                                $prop=sprintf("%0.2f",$prop);
154                                if($prop>=$nxt['sum'])          $cl='f_green';
155                                else
156                                {
157                                        $cl='f_brown';
158                                        $disable='disabled';
159                                }
160                        }
161                        else
162                        {
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
175                        $date=date("Y-m-d H:i:s", $nxt['date']);
176
177                        $tmpl->AddText("<tr class='lin$i $cl'><td><a href='/doc.php?mode=body&doc={$nxt['id']}'>{$nxt['id']}</a>
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>");
179                        $i=1-$i;
180                        if($disable=='')
181                        {
182                                if($nxt['zuser']>0)
183                                        $users[$nxt['zuser']]['sum']+=$nach_sum;
184                                else    $users[$nxt['user']]['sum']+=$nach_sum;
185                        }
186                }
187                $tmpl->AddText("</table>
188                <button>Начислить зарплату</button>
189                </form>
190                Суммы выплат:<br>");
191                foreach($users as $id=>$data)
192                {
193                        $tmpl->AddText("user:$id({$data['name']}) - {$data['sum']} руб.<br>");
194                }
195        }
196}
197
198function getName()
199{
200        return "Расчёт и выплата зарплаты с продаж";
201}
202
203};
204
205?>
Note: See TracBrowser for help on using the repository browser.