/home/mjc1/public_html/otms_old/ajax.order_map_process.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
<?php
$dir 
".";
include_once(
$dir."/_common.php");

$ccode $otms_options['otms_ccode'];
$ocode $otms_options['otms_ocode'];
$bankbook_code $otms_options['otms_bankbook_code'];

$do_cnt 0;

if(
$sel_del=='sync'){ // 동기화 처리
    
foreach($code_idx as $key=>$val){
        
$list_array null;
        
$ord_no $codes[$val];
        
$sql "select a.*, ifnull(b.pcode,'') as pcode, ifnull(c.name,'') as pname, ifnull(c.norm,'') as pnorm, c.tax_yn, ifnull(d.midx,'') as midx
                from (select 
                            pay_date, invoice_no, deli_type, r_name, r_zip, r_addr1, r_addr2, r_hp, r_tel, deli_date, ord_date, deli_memo, p_price, ord_state, ord_no, ord_seq, if(add_p_code>0,add_p_code,p_code) as p_code,add_p_code, p_name, if(add_p_code>0,p_name,p_opt) as p_opt, p_qty, ord_amt, ordpay_amt, deli_price
                            from zom_order where ord_no = '
{$ord_no}'
                ) a
            left join zom_prod_mapping b on a.p_code = b.p_code and a.p_opt = b.io_id 
            left join product_m c on b.pcode = c.code
            left join (select ord_no, midx from zom_order_mapping group by ord_no, midx) d on a.ord_no = d.ord_no
        "
;
        
$result      =    mysql_query($sql,$connect_om);

        
//_pr($sql);
        
$deli_price 0;
        while(
$cus_info=mysql_fetch_array($result)){
            if(
$cus_info['deli_price']>0){    
                
$deli_price += $cus_info['deli_price']; 
                
$cus_info['ordpay_amt'] = $cus_info['ordpay_amt']-$cus_info['deli_price'];
            }
            if(
$cus_info['add_p_code']>0){
                
$cus_info['p_name'] = "추가상품:".$cus_info['p_name'];
            }
            
$list_array[] = $cus_info;
        }

        
$m_info $list_array[0]; // 첫번째 otms 주문을 마스터 레코드로 삼음
        
if($m_info['midx']==''){
            
$deli_info null;
            if(
$deli_price>0){
                
$deli_info $list_array[0];
                
$deli_info['ord_seq'] = count($list_array);
                
$deli_info['p_code'] = '0';
                
$deli_info['p_name'] = '배송비';
                
$deli_info['p_price'] = $deli_price;
                
$deli_info['p_price_dc'] = '0';
                
$deli_info['p_qty'] = '1';
                
$deli_info['ord_amt'] = $deli_price;
                
$deli_info['ordpay_amt'] = $deli_price;
                
$deli_info['p_code'] = '1';
                
$deli_info['pname'] = '배송비';

                
$list_array[] = $deli_info;
            }

            
//_pr($list_array); exit;

            
$receive_price 0;
            
$sql_d ""$sql_p ""$sql_m ""$sql_r ""$seq 1;
            foreach(
$list_array as $key=>$info){
                if(
$info['pcode']!=''){ // 동기화된 상품만 처리
                    
$sql "";
                    if(
$info['ord_state']>='200' && $info['ord_state']<='501'){
                        
$receive_price += $info['ordpay_amt'];
                    }
                    if(
$info['tax_yn']=='1'){
                        
$vat round(($info['ordpay_amt']/11),0);
                        
$sup_amt $info['ordpay_amt'] - $vat;
                    } else {
                        
$vat 0;
                        
$sup_amt $info['ordpay_amt'];
                    }
                    if(
$mapp_type=='0'){ // 주문일경우
                        
$sql "insert into sale_ord_d 
                                    set midx = '[midx]', seq = '
{$seq}', pcode = '{$info['pcode']}', pname = '{$info['pname']}', 
                                    qty = '
{$info['p_qty']}', price = '{$info['p_price']}', tot_amt = '{$info['ordpay_amt']}', vat = '{$vat}', 
                                    sup_amt = '
{$sup_amt}', dc = '0', tax_type = '{$info['tax_yn']}', pce_qty = '{$info['p_qty']}', 
                                    remarks = '
{$info['deli_memo']}', input_type = '111', data_created = '".date("Y-m-d H:i:s",time())."'; §
                        "
;
                    } else if(
$mapp_type=='1'){ // 매출일경우
                        
$sql "insert into sale_d set
                                    midx = '[midx]', seq = '
{$seq}', pcode = '{$info['pcode']}', pname = '{$info['pname']}',
                                    pnorm = '
{$info['pnorm']}', qty = '{$info['p_qty']}', price = '{$info['p_price']}',
                                    sup_amt = '
{$sup_amt}', vat = '{$vat}', tot_amt = '{$info['ordpay_amt']}', remarks = '{$info['deli_memo']}',
                                    tax_type = '
{$info['tax_yn']}', input_type = '111', data_created = '".date("Y-m-d H:i:s",time())."'; §
                        "
;
                    }
                    
$sql_d .= $sql;  // 주문 or 매출 detail sql 임시 저장

                    
if($info['p_code']=='1' && $info['pname']=='배송비'){
                        
$sync_type "1";
                    } else {
                        
$sync_type "0";
                    }

                    if(
$seq==1){ // 주문 or 매출 마스터 sql 임시 저장
                        
$orddate substr($info['ord_date'],0,10);
                        if(
$info['deli_date']!='0000-00-00 00:00:00'){
                            
$deliverydate substr($info['deli_date'],0,10);
                        } else {
                            
$deliverydate $orddate;
                        }
                        if(
$info['ord_state']=='102' || $info['ord_state']=='202'){ $ordstate '0'; } // 주문대기/입금완료시
                        
if($info['ord_state']=='301'){ $ordstate '1'; } // 발주확인(배송준비중)
                        
if($info['ord_state']=='401'){ $ordstate '2'; } // 발송완료(배송중)
                        
if($info['ord_state']=='501'){ $ordstate '3'; } // 배송완료

                        
if($info['deli_type']=='01' || $info['deli_type']=='03'){ $freight_term '1'; }
                        if(
$info['deli_type']=='02'){ $freight_term '2'; }

                        if(
$mapp_type=='0'){ // 주문일경우
                            
$sql_m "insert into sale_ord_m 
                                    set orddate = '
{$orddate}', deliverydate = '{$deliverydate}', route = '1', ordstate = '{$ordstate}', 
                                    ccode = '
{$ccode}', input_type = '111', consignee_name = '{$info['r_name']}', consignee_zipcode = '{$info['r_zip']}', 
                                    consignee_addr_m = '
{$info['r_addr1']}', consignee_addr_d = '{$info['r_addr2']}', consignee_telno = '{$info['r_tel']}', consignee_hpno = '{$info['r_hp']}', 
                                    freight_term = '
{$freight_term}', tracking_number = '{$info['invoice_no']}', data_created = '".date("Y-m-d H:i:s",time())."'        
                            "
;
                        } else if(
$mapp_type=='1'){ // 매출일경우
                            
$sql "select ifnull(max(dealseq),0)+1 as maxcode from sale_m where dealdate = '{$orddate}' and ccode = '{$ccode}'"// dealseq 받아옴
                            
$res mysql_query($sql,$connect_om);
                            
$row mysql_fetch_array($res);
                            
$dealseq $row['maxcode'];

                            
$sql "select ifnull(max(substring(dealnum,1,10)),0) as maxdealnum from sale_m where 1=1 and substring(dealnum,1,6) = '".date("ymd",time())."' "// 딜넘버 가져오기
                            
$res mysql_query($sql,$connect_om); $all_sql .= $sql;
                            
$row mysql_fetch_array($res);
                            
$maxdealnum $row['maxdealnum'];
                            if(
$maxdealnum=='0'){ $maxdealnum date("ymd",time())."000101"; }
                            else {
                                
$last_seq = (substr($maxdealnum,6,4)*1)+1;
                                
$maxdealnum date("ymd",time()).str_pad($last_seq,4,'0',STR_PAD_LEFT)."01";
                            }

                            
$sql_m "insert into sale_m set
                                        dealdate = '
{$orddate}', dealseq = '{$dealseq}', ccode = '{$ccode}', ocode = '{$ocode}', dealnum = '$maxdealnum', 
                                        input_type = '111', remarks = '', data_created = '"
.date("Y-m-d H:i:s",time())."' 
                            "
;
                        }
                    }

                    
$sql "insert into zom_order_mapping set
                                ord_no = '
{$info['ord_no']}', ord_seq = '{$info['ord_seq']}', midx = '[midx]', seq = '{$seq}', 
                                sync_type = '
{$sync_type}', sync_name = '{$info['pname']}', mapp_type = '{$mapp_type}', return_type = '0', 
                                receive_code = '[receive_code]', status = '
{$ordstate}', succ = '일치'; §
                    "
;
                    
$sql_p .= $sql// 매핑 sql 임시 저장

                    
$seq++;
                }
            }

            if(
$receive_price>0){
                if(
$m_info['pay_date']!='0000-00-00 00:00:00'){
                    
$dealdate substr($v['pay_date'],0,10);
                } else {
                    
$dealdate substr($m_info['ord_date'],0,10);;
                }
                
$dealtype '0'// 11번가에서는 주문형태를 받아올수 없기 때문에 0:현금 으로 일단 처리
                
if($mapp_type=='1'){ // 매출일경우
                    
$dealidx_add "dealidx = '[dealidx]', ";
                }
                
$sql_r "insert into receive 
                                set 
{$dealidx_add} ocode = '{$ocode}', dealdate = '$dealdate', ccode = '{$ccode}', dealtype = '{$dealtype}', 
                                amount = '
{$receive_price}', total = '{$receive_price}', bankbook_code = '{$bankbook_code}', input_type = '111', 
                                data_created = '"
.date("Y-m-d H:i:s",time())."'
                "
;
            }

            
$do_res mysql_query($sql_m,$connect_om);
            
$midx 1;
            
$midx mysql_insert_id($connect_om);
            if(
$midx>0){
                
$sql_d str_replace("[midx]",$midx,$sql_d);
                
$v explode("§",$sql_d);
                foreach(
$v as $key=>$sql){
                    
$do_res mysql_query($sql,$connect_om);
                }
                if(
$sql_r!=''){
                    if(
$mapp_type=='1'){ // 매출일경우
                        
$sql_r str_replace("[dealidx]",$midx,$sql_r);
                    }
                    
$do_res mysql_query($sql_r,$connect_om);
                    
$receive_code "1";
                    
$receive_code mysql_insert_id($connect_om);
                    
$sql_p str_replace("[receive_code]",$receive_code,$sql_p);
                } else {
                    
$sql_p str_replace("[receive_code]","",$sql_p);
                }
                
$sql_p str_replace("[midx]",$midx,$sql_p);
                
$v explode("§",$sql_p);
                foreach(
$v as $key=>$sql){
                    
$do_res mysql_query($sql,$connect_om);
                }
                
$do_res mysql_query($sql_p,$connect_om);
                
$mode_ok "Y";
                
$do_cnt++;
            }
            
/*_pr($sql_m);
            _pr($sql_r);
            _pr($sql_d);
            _pr($sql_p);    */
        
}

        if(
$do_cnt==0){
            
$msg "매핑처리된 주문이 없습니다.";
        }
        
    }
} else if(
$sel_del=='sync_del'){ // 동기화 삭제
    
foreach($code_idx as $key=>$val){
        
$list_array null;
        
$ord_no $codes[$val];
        
$sql "select * from zom_order_mapping where ord_no = '{$ord_no}';";
        
$result      =    mysql_query($sql,$connect_om);

        
//_pr($sql);
        
$deli_price 0;
        while(
$cus_info=mysql_fetch_array($result)){
            
$list_array[] = $cus_info;
        }

        foreach(
$list_array as $key=>$info){
            if(
$info['mapp_type']=='1'){ // 매출 삭제
                
$sql "delete from sale_m where midx = '{$info['midx']}' ";
            } else { 
// 주문 삭제
                
$sql "delete from sale_ord_m where midx = '{$info['midx']}' ";
            }
            
mysql_query($sql,$connect_om);

            if(
$info['receive_code']>0){ // 입금확인 후 삭제
                
$sql "delete from receive where nidx = '{$info['receive_code']}' ";
                
mysql_query($sql,$connect_om);
            }

            
$sql "delete from zom_order_mapping where ord_no = '{$ord_no}' ";
            
mysql_query($sql,$connect_om);
            
$mode_ok "Y";
        }
    }
}

echo 
"<?php xml version='1.0' encoding='utf-8'?><output>";
echo 
"<mode>".$mode."</mode>";
echo 
"<mode_ok>".$mode_ok."</mode_ok>";
echo 
"<rtn_url>".$rtn_url."</rtn_url>";
echo 
"<msg>".$msg."</msg>";
echo 
"<dis_otms>".$dis_otms."</dis_otms>";
echo 
"<dis_cs>".$dis_cs."</dis_cs>";

//echo "<sql>".$all_sql."</sql>";
echo "</output>";

?>