| int _fresh() {
 string sql, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, nDate;
 int n, id, i, k;
 db_run('drop table t_sTOP commit');
 sql = "select h.* into t_sTOP from (select e.eba_name,c.voucher_no,c.note_info,a.tqty,a.prd_date,a.cmp_date,a.swh from (";
 sql = sql + " select voucher_id,cpo=max(case when attr_id='CPO' then attr_val else '' end),";
 sql = sql + " prd_date=max(case when attr_id='Prd_date' then attr_val else '' end),";
 sql = sql + " cmp_date=max(case when attr_id='Cmp_date' then attr_val else '' end),";
 sql = sql + " swh=max(case when attr_id='SWH' then attr_val else '' end),";
 sql = sql + " tqty=max(case when attr_id='tQty' then attr_val else '' end) from ebs_v_attr a group by voucher_id ) a";
 sql = sql + " inner join ebs_vr b on a.voucher_id=b.voucher_id inner join ebs_v c on a.voucher_id=c.voucher_id";
 sql = sql + " inner join eba e on e.eba_id=b.eba_id) h";
 db_run(sql + " commit");
 db_run('drop table t_pSWH commit');
 sql = "select v.* into t_pSWH from (";
 sql = sql + "select b.eba_name,b.voucher_no,b.note_info,b.tqty,b.prd_date,b.cmp_date,";
 sql = sql + "DateDiff(d,b.prd_date,convert(varchar(100),DATEADD(DAY,1,b.cmp_date),112)) tDays,";
 sql = sql + "cast(b.swh AS decimal(9,4))*cast(b.tqty AS decimal(9,4)) tSWH,";
 sql = sql + "cast(cast(b.swh AS decimal(9,4))*cast(b.tqty AS decimal(9,4))/";
 sql = sql + "DateDiff(d,b.prd_date,convert(varchar(100),DATEADD(DAY,1,b.cmp_date),112)) as decimal(9,1)) reqSWH,";
 sql = sql + "cast(c.wc/b.tqty*100 as decimal(9,2))eWC from t_sTOP b ";
 sql = sql + "left join (select sum(a.inp_num)wc,left(a.ref_voucher_no,4) voucher_no from ebs_vr_item a ";
 sql = sql + "where a.ref_voucher_type='HB' and a.sub_attr_val_1<>'-' group by left(a.ref_voucher_no,4))c on c.voucher_no=b.voucher_no";
 sql = sql + ")v";
 db_run(sql + " commit");
 //分解排单
 sql = "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_oSWH]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)";
 sql = sql + " drop table [dbo].[t_oSWH] ";
 sql = sql + " CREATE TABLE [dbo].[t_oSWH] (";
 sql = sql + " [eba_id] [varchar] (50) ,";
 sql = sql + " [voucher_no] [varchar] (50) ,";
 sql = sql + " [note_info] [varchar] (200) ,";
 sql = sql + " [tQTY] [numeric](8, 0) ,";
 sql = sql + " [tDays] [numeric](8, 0) ,";
 sql = sql + " [eBegDate] [varchar] (20) ,";
 sql = sql + " [eEndDate] [varchar] (20) ,";
 sql = sql + " [eDay] [varchar] (20) ,";
 sql = sql + " [tSWH] [numeric](8, 1) ,";
 sql = sql + " [dSWH] [numeric](8, 1) ";
 sql = sql + " ) ON [PRIMARY]";
 db_run(sql);
 
 int n, id, k, a, b;
 string v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, sql;
 
 db_select_area(0);
 db_run('select * from t_pSWH');
 n = db_row_count();
 for (id = 0; id < n; id++)
 {
 db_select_area(0);
 v1 = db_res(0);
 v2 = db_res(1);
 v3 = db_res(2);
 v4 = db_res(3);
 v5 = db_res(4);
 v6 = db_res(5);
 v7 = db_res(6);
 v8 = db_res(7);
 v9 = db_res(8);
 v10 = db_res(9);
 k = db_res(6);
 for (a = 0; a < k; a++)
 {
 db_select_area(1);
 sql = "insert into t_oSWH values('" + v1 + "','" + v2 + "','" + v3 + "','" + v4 + "','" + v7 ;
 sql = sql + "','" + v5 + "','" + v6 + "','" + date_add(v5, a) + "','" + v8 + "','" + v9 + "')";
 db_run(sql);
 }
 db_select_area(0);
 db_next();
 };
 db_run('drop table t_tWH');
 db_run("select eba_id+' '+voucher_no+' '+note_info nT,eDay,dSWH into t_tWH from t_oSWH");
 db_run('drop table t_rWH');
 sql = "declare @s nvarchar(4000)";
 sql = sql + " set @s=''";
 sql = sql + " Select @s=@s+','+quotename(nT)+'=sum(case when [nT]='+quotename(nT,'''')+' then dSWH else 0 end)'";
 sql = sql + " from t_tWH group by nT";
 sql = sql + " exec('select eDay'+@s+' into t_rWH from t_tWH group by eDay')";
 db_run(sql);
 sql = " select a.*,b.totalSWH from t_rWH a left join (";
 sql = sql + " select eDay,sum(dSWH)totalSWH from t_nSWH group by eDay )b on a.eDay=b.eDay";
 db_run(sql);
 //创建汇总表
 sql = "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CFA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)";
 sql = sql + " drop table [dbo].[t_CFA] ";
 db_run(sql);
 
 sql = "select c.* into t_CFA from (";
 sql = sql + " select a.*,b.totalSWH from t_rWH a left join (select eDay,sum(dSWH)totalSWH from t_nSWH group by eDay )b on a.eDay=b.eDay ) c ";
 db_run(sql);
 sql = "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_xWH]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)";
 sql = sql + " drop table [dbo].[t_xWH] ";
 sql = sql + " CREATE TABLE [dbo].[t_xWH] (";
 sql = sql + " [eDay] [varchar] (50) ,";
 sql = sql + " [avSWH] [varchar](20) ,";
 sql = sql + " [tWorker] [varchar] (50) ,";
 sql = sql + " [eWH] [varchar](20) ,";
 sql = sql + " [COL] [varchar](20) ";
 sql = sql + " ) ON [PRIMARY]";
 db_run(sql);
 sql = "insert into t_xWH select eday,'0','0','0','0' from t_CFA ";
 db_run(sql);
 sql = "drop table t_ccit commit";
 db_run(sql);
 sql = "select c.* into t_ccit from (";
 sql = sql + "select a.*,b.avSWH,b.COL,b.tWorker,b.eWH from t_CFA a left join t_xWH b on a.eDay=b.eDay)c";
 db_run(sql);
 return 1;
 }
 
 int func_def_lmt()
 {
 _fresh()
 def_lmt_date('beg_date', 'Qstart');
 //lmt_set_must_checked('beg_date');
 def_lmt_date('end_date', 'Qstop');
 //lmt_set_must_checked('end_date');
 def_lmt_dict("expType", "expType", 'whType');
 lmt_set_must_checked('expType');
 def_lmt_date("expDate", "expDate");
 lmt_set_must_checked('expDate');
 def_lmt_str('sWorker', 'Workers');
 lmt_set_must_checked('sWorker')
 def_lmt_str('sWH', 'WH@');
 lmt_set_must_checked('sWH');
 return 1;
 };
 
 int func_init_lmt_val()
 {
 def_lmt_set_val('sWorker', '0');
 def_lmt_set_val('sWH', '0');
 def_lmt_set_val('expType', 'O');
 return 1;
 };
 
 int func_def_field()
 {
 string sql;
 int a, b; db_select_area(0);
 sql = "select * from t_ccit";
 db_run(sql);
 a = db_field_count();
 for (b = 0; b < a; b++)
 {
 db_set_field_info(b, db_field_name(b), db_field_name(b), 80);
 }
 
 string sql2, logic, exDate;
 num a, b, c;
 a = lmt_val('sWorker');
 b = lmt_val('sWH');
 c = a * b;
 logic = lmt_val('expType');
 exDate = lmt_val('expDate');
 if(lmt_checked('beg_date')==1 || lmt_checked('beg_date')==1)
 {
 sql2 = "select * from t_ccit where convert(varchar(100),eDay, 112) between '" + lmt_val('beg_date') + "' and '" + lmt_val('end_date') + "'";
 }
 else
 {
 sql2 = "select * from t_ccit";
 }
 
 if (logic != 'O' && (a == 0 || b == 0))
 {
 dbg('可用工人或单位工时为0');
 sql = "update t_ccit set avSWH='0',COL='0',tWorker='0',eWH='0'";
 db_run(sql);
 db_run(sql2);
 break;
 }
 else
 {
 switch (logic)
 {
 case "X":
 sql = "update t_ccit set avSWH=" + c + ",COL=cast((" + c + "-totalSWH)/" + c + " as decimal(8,4))";
 sql = sql + ",tWorker='" + a + "',eWH='" + b + "'";
 db_run(sql);
 break;
 case "M":
 sql = "update t_ccit set avSWH=" + c + ",COL=cast((" + c + "-totalSWH)/" + c + " as decimal(8,4))";
 sql = sql + ",tWorker='" + a + "',eWH='" + b + "'";
 sql = sql + " where left(eDay,6)='" + str_get_sub(exDate, 0, 6) + "'";
 db_run(sql);
 break;
 case "D":
 sql = "update t_ccit set avSWH=" + c + ",COL=cast((" + c + "-totalSWH)/" + c + " as decimal(8,4))";
 sql = sql + ",tWorker='" + a + "',eWH='" + b + "'";
 sql = sql + " where eDay='" + exDate + "'";
 db_run(sql);
 break;
 case "O":
 db_run(sql2);
 break;
 }
 }
 db_run(sql2);
 return 1;
 }
 |