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>";
?>
|