123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- $PBExportHeader$uo_sc_task_finish.sru
- forward
- global type uo_sc_task_finish from uo_transactionobject
- end type
- end forward
- global type uo_sc_task_finish from uo_transactionobject
- end type
- global uo_sc_task_finish uo_sc_task_finish
- type variables
- end variables
- forward prototypes
- public function integer uf_finishbarcode (long arg_wrkgrpid[], string arg_barcode[], datetime arg_opdate[], ref string arg_msg)
- end prototypes
- public function integer uf_finishbarcode (long arg_wrkgrpid[], string arg_barcode[], datetime arg_opdate[], ref string arg_msg);uo_finish uo_finish_wg
- uo_finish_wg = Create uo_finish
- Int rslt = 1
- Long ll_i, ll_j
- Long arr_wrkgrpid[]
- Long ll_cnt = 0
- Long ll_scid
- Long ll_wagemth
- String arr_taskcode[]
- Decimal arr_qty[]
- Boolean arr_task[]
- Long arr_taskid[]
- Long arr_empid[]
- Long arr_workgroupid[]
- Decimal arr_workprice[]
- String arr_procode[]
- String arr_proname[]
- Long arr_wageid[]
- Long arr_scid[]
- Long ll_mxcnt
- s_finish_mx s_mx[],s_empty[]
- // 汇总工组
- FOR ll_i = 1 To UpperBound(arg_wrkgrpid)
- arr_task[ll_i] = False
-
- SELECT relcode, qty, scid
- INTO :arr_taskcode[ll_i], :arr_qty[ll_i], :arr_scid[ll_i]
- FROM u_ordermtrl_workgroup_barcode
- Where barcode = :arg_barcode[ll_i] And swkpid = :arg_wrkgrpid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单号失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF arr_taskcode[ll_i] <> '' THEN
-
- SELECT u_sc_task.taskid,
- u_sc_task.empid,
- u_sc_task.workgroupid,
- ISNULL(U_OrderRqwp.workPrice, 0),
- u_sc_task.procode,
- u_sc_task.proname
- INTO :arr_taskid[ll_i],
- :arr_empid[ll_i],
- :arr_workgroupid[ll_i],
- :arr_workprice[ll_i],
- :arr_procode[ll_i],
- :arr_proname[ll_i]
- FROM u_sc_task LEFT OUTER JOIN
- U_OrderRqwp ON u_sc_task.scid = U_OrderRqwp.scid AND
- u_sc_task.orderid = U_OrderRqwp.orderid AND
- u_sc_task.mtrlid = U_OrderRqwp.Mtrlid AND
- u_sc_task.procode = U_OrderRqwp.Procode
- Where u_sc_task.taskcode = :arr_taskcode[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单信息失败,' +sqlca.SQLErrText
- GOTO ext
- END IF
- arr_wageid[ll_i] = 0
- IF arr_empid[ll_i] > 0 Or (arr_empid[ll_i] = 0 And arr_workgroupid[ll_i] = 0 ) THEN
- SELECT top 1 wageid
- INTO :arr_wageid[ll_i]
- FROM u_gz_wageitem
- WHERE (u_gz_wageitem.wagemode = 12 ) AND
- ( u_gz_wageitem.useflag = 1 ) ;
- IF sqlca.SQLCode <> 0 THEN
- arr_wageid[ll_i] = 0
- END IF
- ELSEIF arr_workgroupid[ll_i] > 0 THEN
- SELECT top 1 wageid
- INTO :arr_wageid[ll_i]
- FROM u_gz_wageitem
- WHERE (u_gz_wageitem.wagemode = 16 ) AND
- ( u_gz_wageitem.useflag = 1 ) ;
- IF sqlca.SQLCode <> 0 THEN
- arr_wageid[ll_i] = 0
- END IF
- END IF
-
- arr_task[ll_i] = True
-
- FOR ll_j = 1 To ll_cnt
- IF arr_wrkgrpid[ll_j] = arg_wrkgrpid[ll_i] THEN
- GOTO _next
- END IF
- NEXT
-
- ll_cnt++
- arr_wrkgrpid[ll_cnt] = arg_wrkgrpid[ll_i]
- END IF
-
- _next:
- NEXT
- Long arr_opdate[], empty_opdate[]
- Long ll_k
- FOR ll_i = 1 To ll_cnt
- ll_scid = 0 // TODO: 获取分部
- arr_opdate = empty_opdate
- FOR ll_j = 1 To UpperBound(arg_wrkgrpid)
- IF arr_task[ll_j] And &
- arg_wrkgrpid[ll_j] = arr_wrkgrpid[ll_i] THEN
- ll_scid = arr_scid[ll_j]
-
- FOR ll_k = 1 To UpperBound(arr_opdate)
- IF Long(String(arg_opdate[ll_j], 'yyyyMM')) = arr_opdate[ll_k] THEN
- GOTO _nextbarcode
- END IF
- NEXT
- arr_opdate[UpperBound(arr_opdate) + 1] = Long(String(arg_opdate[ll_j], 'yyyyMM'))
- END IF
- _nextbarcode:
- NEXT
- ll_wagemth = 0 // TODO: 获取工资月份
-
- FOR ll_k = 1 To UpperBound(arr_opdate)
- ll_wagemth = arr_opdate[ll_k]
-
- IF uo_finish_wg.newbegin(ll_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_finish_wg.scid = ll_scid
- uo_finish_wg.relcode = ''
- uo_finish_wg.assign_emp = publ_operator
- uo_finish_wg.wrkgrpid = arr_wrkgrpid[ll_i]
- uo_finish_wg.wagemth = ll_wagemth
- uo_finish_wg.dscrp = ''
- uo_finish_wg.finishdate = DateTime(Today(),Now())
-
- ll_mxcnt = 0
- s_mx = s_empty
- FOR ll_j = 1 To UpperBound(arg_wrkgrpid)
- IF arr_task[ll_j] And &
- arg_wrkgrpid[ll_j] = arr_wrkgrpid[ll_i] And &
- Long(String(arg_opdate[ll_j], 'yyyyMM')) = arr_opdate[ll_k] THEN
-
- ll_mxcnt++
- s_mx[ll_mxcnt].taskid = arr_taskid[ll_j]
- s_mx[ll_mxcnt].printid = ll_mxcnt
- s_mx[ll_mxcnt].comqty = arr_qty[ll_j]
- s_mx[ll_mxcnt].mxdscrp = ''
- s_mx[ll_mxcnt].wageid = arr_wageid[ll_j]
- s_mx[ll_mxcnt].empid = arr_empid[ll_j]
- s_mx[ll_mxcnt].workgroupid = arr_workgroupid[ll_j]
- s_mx[ll_mxcnt].workPrice = arr_workprice[ll_j]
- s_mx[ll_mxcnt].procode = arr_procode[ll_j]
- s_mx[ll_mxcnt].proname = arr_proname[ll_j]
- s_mx[ll_mxcnt].storageid = 0
- END IF
- NEXT
-
- IF uo_finish_wg.Save(s_mx,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
-
- NEXT
- GOTO ext
- ext:
- Destroy uo_finish_wg
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- RETURN rslt
- end function
- on uo_sc_task_finish.create
- call super::create
- end on
- on uo_sc_task_finish.destroy
- call super::destroy
- end on
|