ch
2022-11-03 62d9db64adb0ae095c0e7e6afdde4bcbb7b2a481
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
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
 
namespace DAL
{
    public class ClsSc_ProcessExchangeBill : DBUtility.ClsXt_BaseBill
    {
        public Model.ClsSc_ProcessExchangeBillMain omodel = new Model.ClsSc_ProcessExchangeBillMain();
        public List<Model.ClsSc_ProcessExchangeBillSub> DetailColl = new List<Model.ClsSc_ProcessExchangeBillSub>();
 
        public ClsSc_ProcessExchangeBill()
        {
            base.MvarItemKeySub = "Sc_ProcessExchangeBillSub";
            base.MvarItemKeySub2 = "";
            base.MvarItemKeySub3 = "";
            base.MvarItemKeySub4 = "";
            base.MvarItemKey = "Sc_ProcessExchangeBillMain";
            base.MvarReportTitle = "工序流转卡";
            base.BillType = "3772";
            base.HBillSubType = "3772";
 
        }
 
        #region 固定代码
 
        ~ClsSc_ProcessExchangeBill()
        {
            DetailColl = null;
        }
 
        #endregion   自定义方法
 
        /// <summary>
        /// 根据单号返回iD
        /// </summary>
        /// <param name="HLotNo"></param>
        /// <param name="sReturn"></param>
        /// <returns></returns>
        public bool GetIDByNo(string HLotNo, ref string sReturn)
        {
            DataSet Ds;
            Ds = oCn.RunProcReturn("Select * from Sc_ProcessExchangeBillMain Where HBillNo='" + HLotNo.ToString() + "' and HDeleteMan=''  ", "Sc_ProcessExchangeBillMain");
            if (Ds.Tables[0].Rows.Count == 0)
            {
                sReturn = "流转卡无效!";
                return false;
            }
            omodel.HInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"]);
            return true;
        }
 
        //修改单据
        public override bool ModifyBill(Int64 lngBillKey, ref string sReturn)
        {
            try
            {
                //
                oCn.BeginTran();
                string sql = string.Format(@"UpDate Sc_ProcessExchangeBillMain set  " +
                " HBillNo='" + omodel.HBillNo + "'" +  //固定赋值===============
                ",HDate='" + omodel.HDate + "'" +
                ",HYear='" + omodel.HYear.ToString() + "'" +
                ",HPRDORGID='" + omodel.HPRDORGID.ToString() + "'" +
                ",HPeriod='" + omodel.HPeriod.ToString() + "'" +
                ",HRemark='" + omodel.HRemark + "'" +
                ",HUpDater='" + DBUtility.ClsPub.CurUserName + "'" +
                ",HUpDateDate=getdate()" +
                //========================================
                ",HWWOrderInterID=" + omodel.HWWOrderInterID.ToString() +
                ",HWWOrderEntryID=" + omodel.HWWOrderEntryID.ToString() +
                ",HWWOrderBillNo='" + omodel.HWWOrderBillNo + "'" +
                //",HICMOInterID=" + omodel.HICMOInterID.ToString() +
                ",HICMOBillNo='" + omodel.HICMOBillNo + "'" +
                ",HBatchNo='" + omodel.HBatchNo + "'" +
                ",HMaterID2=" + omodel.HMaterID2.ToString() +
                ",HMaterID=" + omodel.HMaterID.ToString() +
                ",HMaterNumber='" + omodel.HMaterNumber + "'" +
                ",HUnitID=" + omodel.HUnitID.ToString() +
                ",HUnitNumber='" + omodel.HUnitNumber + "'" +
                ",HQty=" + omodel.HQty.ToString() +
                ",HPlanQty=" + omodel.HPlanQty.ToString() +
                ",HPlanBeginDate='" + omodel.HPlanBeginDate + "'" +
                ",HPlanEndDate='" + omodel.HPlanEndDate + "'" +
                ",HExplanation='" + omodel.HExplanation + "'" +
                ",HInnerBillNo='" + omodel.HInnerBillNo + "'" +
                ",HSupID=" + omodel.HSupID.ToString() +
                ",HMainMaterID=" + omodel.HMainMaterID.ToString() +
                ",HKeyMaterID=" + omodel.HKeyMaterID.ToString() +
                ",HWorkShopID=" + omodel.HWorkShopID.ToString() +
                ",HEquipMentID=" + omodel.HEquipMentID.ToString() +
                ",HProjectNum='" + omodel.HProjectNum.ToString() + "'" +
                ",HMateOutBatchNo='" + omodel.HMateOutBatchNo + "'" +
 
                ",HProdMaterCode='" + omodel.HProdMaterCode + "'" +
                ",HSeOrderBillNo='" + omodel.HSeOrderBillNo + "'" +
                ",HCusShortName='" + omodel.HCusShortName + "'" +
                ",HCusNeedMaterial='" + omodel.HCusNeedMaterial + "'" +
                ",HPlanSendGoodsDate='" + omodel.HPlanSendGoodsDate + "'" +
                ",HProdMaterName='" + omodel.HProdMaterName + "'" +
                ",HCusName='" + omodel.HCusName + "'" +
                ",HWorkRemark='" + omodel.HWorkRemark + "'" +
                ",HImportNote='" + omodel.HImportNote + "'" +
                ",HMaterNumber_A='" + omodel.HMaterNumber_A + "'" +
                ",HMaterNumber_B='" + omodel.HMaterNumber_B + "'" +
                ",HMaterNumber_C='" + omodel.HMaterNumber_C + "'" +
                ",HMaterNumber_D='" + omodel.HMaterNumber_D + "'" +
                ",HProdType='" + omodel.HProdType + "'" +
                ",HMaterShortName='" + omodel.HMaterShortName + "'" +
                ",HMaterIDA='" + omodel.HMaterIDA + "'" +
                ",HMaterIDB='" + omodel.HMaterIDB + "'" +
                ",HMaterIDC='" + omodel.HMaterIDC + "'" +
                ",HMaterIDD='" + omodel.HMaterIDD + "'" +
                ",HPicNumVer='" + omodel.HPicNumVer + "'" +
                ",HPicNumAssemble='" + omodel.HPicNumAssemble + "'" +
                ",HMaterTexture='" + omodel.HMaterTexture + "'" +
                ",HProductNum='" + omodel.HProductNum + "'" +
                ",HVerNum='" + omodel.HVerNum + "'" +
                ",HWorkBillSortNo='" + omodel.HWorkBillSortNo + "'" +
                //加入生产类型
                ",HWorkTypeNum='" + omodel.HWorkTypeNum + "'" +
                " where HInterID=" + lngBillKey.ToString());
                //更新主表
                oCn.RunProc(sql);
                //删除关联
                DeleteRelation(ref sReturn, lngBillKey);
                //删除子表
                DeleteBillSub(lngBillKey);
                //插入子表
                omodel.HInterID = lngBillKey;
                foreach (Model.ClsSc_ProcessExchangeBillSub oSub in DetailColl)
                {
 
                    string sql1 = string.Format(@"Insert into Sc_ProcessExchangeBillSub " +
                      " (HInterID,HEntryID,HBillNo_bak," +
                      "HCloseMan,HEntryCloseDate,HCloseType,HRemark," +
                      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType," +
                      "HRelationQty,HRelationMoney,HRelationQty_In," +
                      "HRelationQty_Out,HRelationQty_WWOrder,HRelationQty_Bad," +
                      "HProcNo,HProcID,HProcNumber,HWorkRemark," +
                      "HCenterID,HDeptID" +
                      ",HDeptNumber,HGroupID," +
                      "HGroupNumber,HWorkerID,HWorkerNumber,HSourceID" +
                      ",HQty,HTimeUnit,HPlanWorkTimes,HPlanBeginDate," +
                      "HPlanEndDate,HRelBeginDate" +
                      ",HRelEndDate,HReadyTime,HQueueTime,HMoveTime,HBeginDayQty,HBeginFixQty" +
                      ",HFixWorkDays,HTrunWorkDays,HReadyTimes," +
                      "HMyWorkDays,HOutPrice,HOutMoney,HPassRate" +
                      ",HLastProc,HKeyProc,HFstProc,HICMOInterID,HICMOBillNo,HWWOrderInterID," +
                      "HWWOrderEntryID,HWWOrderBillNo,HReportQty,HBackProc" +
                      ",HSupID,HSupFlag,HOverRate,HMaxQty,HTechnologyParameter,HProcCheckNote,HPicNum" +
                      ",HMouldNo,HProcWorkNum,HSeOrderInterID,HSeOrderEntryID" +
                      ") values("
                      + omodel.HInterID.ToString() + "," + oSub.HEntryID.ToString() + ",'" + omodel.HBillNo + "'" +
                      ",'" + oSub.HCloseMan + "','" + oSub.HEntryCloseDate + "'," + Convert.ToString(oSub.HCloseType ? 1 : 0) + ",'" + oSub.HRemark + "'" +
                      "," + oSub.HSourceInterID.ToString() + "," + oSub.HSourceEntryID.ToString() + ",'" + oSub.HSourceBillNo + "','" + oSub.HSourceBillType + "',"
                      + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() + "," + oSub.HRelationQty_In.ToString() + ","
                      + oSub.HRelationQty_Out.ToString() + "," + oSub.HRelationQty_WWOrder.ToString() + "," + oSub.HRelationQty_Bad.ToString() +
                      "," + oSub.HProcNo.ToString() + "," + oSub.HProcID.ToString() + ",'" + oSub.HProcNumber + "','" + oSub.HWorkRemark + "'" +
                      "," + oSub.HCenterID.ToString() + "," + oSub.HDeptID.ToString() + ",'" + oSub.HDeptNumber + "'," + oSub.HGroupID.ToString() +
                      ",'" + oSub.HGroupNumber + "'," + oSub.HWorkerID.ToString() + ",'" + oSub.HWorkerNumber + "'," + oSub.HSourceID.ToString() +
                      ",'" + oSub.HQty + "','" + oSub.HTimeUnit + "','" + oSub.HPlanWorkTimes + "','" + omodel.HPlanBeginDate.ToShortDateString() + "'" +
                      ",'" + omodel.HPlanEndDate.ToShortDateString() + "',getdate(),getdate()" +
                      "," + oSub.HReadyTime.ToString() + "," + oSub.HQueueTime.ToString() + "," + oSub.HMoveTime.ToString() + "," + oSub.HBeginDayQty.ToString() +
                      "," + oSub.HBeginFixQty.ToString() + "," + oSub.HFixWorkDays.ToString() + "," + oSub.HTrunWorkDays.ToString() + "," + oSub.HReadyTimes.ToString() +
                      "," + oSub.HMyWorkDays.ToString() + "," + oSub.HOutPrice.ToString() + "," + oSub.HOutMoney.ToString() + "," + oSub.HPassRate.ToString() + ",'" + oSub.HLastProc + "'" +
                      ",'" + oSub.HKeyProc + "','" + oSub.HFstProc + "'," + oSub.HICMOInterID.ToString() + ",'" + oSub.HICMOBillNo + "'," + oSub.HWWOrderInterID.ToString() +
                      "," + oSub.HWWOrderEntryID.ToString() + ",'" + oSub.HWWOrderBillNo + "'," + oSub.HReportQty.ToString() + "," + Convert.ToString(oSub.HBackProc ? 1 : 0) +
                      "," + oSub.HSupID.ToString() + "," + Convert.ToString(oSub.HSupFlag ? 1 : 0) + "," + oSub.HOverRate.ToString() + "," + oSub.HMaxQty.ToString() + ",'" + oSub.HTechnologyParameter + "','" + oSub.HProcCheckNote + "','" + oSub.HPicNum + "'" +
                      ",'" + oSub.HMouldNo + "','" + oSub.HProcWorkNum + "','" + DBUtility.ClsPub.isStrNull(omodel.HSeOrderInterID) + "','" + DBUtility.ClsPub.isStrNull(omodel.HSeOrderEntryID) + "'"+
                      ") ");
                    oCn.RunProc(sql1);
                }
                //
                oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_SetRemark " + omodel.HInterID.ToString()); //设置 备注 为 工艺流
                oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_SetUpdate " + omodel.HInterID.ToString()); //设置 末道 首道 转 等信息
                //oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_SetDate " + omodel.HInterID.ToString());  //回填 开工完工日期 
                //oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_RelationQty " + omodel.HInterID.ToString() + ",1"); //返工流转卡 反写 拆分数量  回填任务单 流转卡数量  回填任务单上限数量
                //控制关联数量
                DataSet ds = new DataSet();
                ds = oCn.RunProcReturn("exec h_p_Sc_ProcessExchangeBill_Checkqty " + omodel.HInterID.ToString(), "h_p_Sc_ProcessExchangeBill_Checkqty");
                if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                {
                    sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                    oCn.RollBack();
                    return false;
                }
                //
                sReturn = "修改单据成功!";
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sReturn = e.Message;
                oCn.RollBack();
                throw (e);
            }
        }
 
        private static char[] lNCode = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
        /// <summary>
        /// 根据当日生成数字生成序列码
        /// </summary>
        /// <param name="lastNum">起始数量(从1开始)</param>
        /// <param name="codeNum">序列码数量</param>
        /// <returns></returns>
        public string GetCodeByNum(Int64 lastNum, Int64 codeNum)
        {
            lastNum -= 1;
            List<string> codeList = new List<string>();
            var maxNum = lastNum + codeNum;
            var lNLength = lNCode.Length;
            for (Int64 i = lastNum; i < maxNum; i++)
            {
                char[] bgCode = new char[] { '0', '0', '0', '0' };
                var sNum = i;//整数倍初始赋值
                for (int a = bgCode.Length - 1; a >= 0; a--)
                {
                    var yNum = sNum % lNLength;//计算余数
                    bgCode[a] = lNCode[yNum];//通过余数定位数组位置
                    sNum = (int)(sNum / lNLength);//计算剩余整数
                    if (sNum == 0)//整数倍为0,则跳出循环
                        break;
                }
                //Console.WriteLine($"生成码{i}:{new string(bgCode)}");//打印生成的序列码(测试用,正式环境请删除或者注释)
                codeList.Add(new string(bgCode));
            }
            return codeList[0];
        }
 
        public string GetNewCodeByNum(Int64 lastNum, Int64 codeNum, Int64 codeLength)
        {
            List<string> codeList = new List<string>();
            var maxNum = lastNum + codeNum;
            var lNLength = lNCode.Length;
            for (Int64 i = lastNum; i < maxNum; i++)
            {
                char[] bgCode = GetNewCodeArray(codeLength);
                var sNum = i;//整数倍初始赋值
                for (int a = bgCode.Length - 1; a >= 0; a--)
                {
                    var yNum = sNum % lNLength;//计算余数
                    bgCode[a] = lNCode[yNum];//通过余数定位数组位置
                    sNum = (int)(sNum / lNLength);//计算剩余整数
                    if (sNum == 0)//整数倍为0,则跳出循环
                        break;
                }
                //Console.WriteLine($"生成码{i}:{new string(bgCode)}");//打印生成的序列码(测试用,正式环境请删除或者注释)
                codeList.Add(new string(bgCode));
            }
            return codeList[0];
        }
 
        /// <summary>
        /// 序列码初始化
        /// </summary>
        private char[] GetNewCodeArray(Int64 codeLength)
        {
            char[] bgCode = new char[codeLength];
            for (Int64 i = 0; i < codeLength; i++)
            {
                bgCode[i] = '0';
            }
            return bgCode;
        }
 
        //新增单据
        public override bool AddBill(ref string sReturn)
        {
            string sErr = "";
            try
            {
                //得到mainid
                omodel.HInterID = DBUtility.ClsPub.CreateBillID(BillType, ref DBUtility.ClsPub.sExeReturnInfo);
                //若MAINDI重复则重新获取
 
                //根据内码 生成项目号并写入数据库
                //omodel.HProjectNum = "";
                //omodel.HProjectNum = GetNewCodeByNum(omodel.HInterID, 1, 3).ToString();
                //
                
                oCn.BeginTran();
                //主表
                oCn.RunProc("Insert Into Sc_ProcessExchangeBillMain   " +
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HPrevMainSourceInterID" +
                ",HYear,HPeriod,HRemark,HBatchNo,HMainMaterID,HKeyMaterID,HNo,HOrderProcNo" +
                ",HWWOrderInterID,HWWOrderEntryID,HWWOrderBillNo,HICMOInterID,HEquipMentID" +
                ",HICMOBillNo,HMaterID,HMaterNumber,HUnitID,HMateOutBatchNo" +
                ",HUnitNumber,HMaterID2,HProjectNum,HPlanQty,HQty,HPlanBeginDate,HPlanEndDate" +
                ",HExplanation,HInnerBillNo,HSupID,HWorkShopID,HWorkTypeNum" +
                ",HProdMaterCode,HSeOrderBillNo,HCusShortName,HCusNeedMaterial,HPlanSendGoodsDate" +
                ",HProdMaterName,HCusName,HWorkRemark,HImportNote,HMaterNumber_A" +
                ",HMaterNumber_B,HMaterNumber_C,HMaterNumber_D,HProdType,HMaterShortName" +
                ",HMaterIDA,HMaterIDB,HMaterIDC,HMaterIDD,HICMOEntryID" +
                ",HPicNumVer,HPicNumAssemble,HMaterTexture,HProductNum,HVerNum,HPRDORGID,HBLFlag,HCusNumber,HPickLabel,HPickLabelNumber,HXTNumber,HXTModel,HWorkBillSortNo" +
                ") " +
                " values('" + this.BillType + "','" + this.HBillSubType + "'," + omodel.HInterID.ToString() + ",'" + omodel.HBillNo + "','" + omodel.HDate + "','" + omodel.HMaker + "',getdate()," + "" + (omodel.HPrevMainSourceInterID == 0 ? omodel.HInterID : omodel.HPrevMainSourceInterID) +
                "," + omodel.HYear.ToString() + "," + omodel.HPeriod.ToString() + ",'" + omodel.HRemark + "','" + omodel.HBatchNo + "'," + omodel.HMainMaterID.ToString() + "," + omodel.HKeyMaterID.ToString() + "," + omodel.HNo.ToString() + ",'" + omodel.HOrderProcNO + "'" +
                "," + omodel.HWWOrderInterID.ToString() + "," + omodel.HWWOrderEntryID.ToString() + ",'" + omodel.HWWOrderBillNo + "'," + omodel.HICMOInterID.ToString() + "," + omodel.HEquipMentID.ToString() +
                ",'" + omodel.HICMOBillNo + "'," + omodel.HMaterID.ToString() + ",'" + omodel.HMaterNumber + "'," + omodel.HUnitID.ToString() + ",'" + omodel.HMateOutBatchNo + "'" +
                ",'" + omodel.HUnitNumber + "'," + omodel.HMaterID2.ToString() + ",'" + omodel.HProjectNum + "'," + omodel.HPlanQty.ToString() + "," + omodel.HQty.ToString() + ",'" + omodel.HPlanBeginDate + "','" + omodel.HPlanEndDate + "'" +
                ",'" + omodel.HExplanation + "','" + omodel.HInnerBillNo + "'," + omodel.HSupID.ToString() + "," + omodel.HWorkShopID.ToString() + ",'" + omodel.HWorkTypeNum + "'" +
                ",'" + omodel.HProdMaterCode + "','" + omodel.HSeOrderBillNo + "','" + omodel.HCusShortName + "','" + omodel.HCusNeedMaterial + "','" + omodel.HPlanSendGoodsDate + "'" +
                ",'" + omodel.HProdMaterName + "','" + omodel.HCusName + "','" + omodel.HWorkRemark + "','" + omodel.HImportNote + "','" + omodel.HMaterNumber_A + "'" +
                ",'" + omodel.HMaterNumber_B + "','" + omodel.HMaterNumber_C + "','" + omodel.HMaterNumber_D + "','" + omodel.HProdType + "','" + omodel.HMaterShortName + "'" +
                ",'" + omodel.HMaterIDA + "','" + omodel.HMaterIDB + "','" + omodel.HMaterIDC + "','" + omodel.HMaterIDD + "'," + omodel.HICMOEntryID +
                ",'" + omodel.HPicNumVer + "','" + omodel.HPicNumAssemble + "','" + omodel.HMaterTexture + "','" + omodel.HProductNum + "','" + omodel.HVerNum + "','"+ omodel.HPRDORGID+ "','"+omodel.HBLFlag+ "','" + omodel.HCusNumber + "','" + omodel.HPickLabel + "','" + omodel.HPickLabelNumber + "','" + omodel.HXTNumber + "','" + omodel.HXTModel + "','" + omodel.HWorkBillSortNo + 
                "') ");
                sErr = sErr + "1;";
                //插入子表
                foreach (Model.ClsSc_ProcessExchangeBillSub oSub in DetailColl)
                {
                    string sql1 = string.Format(@"Insert into Sc_ProcessExchangeBillSub " +
                      " (HInterID,HEntryID,HBillNo_bak," +
                      "HCloseMan,HEntryCloseDate,HCloseType,HRemark," +
                      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType," +
                      "HRelationQty,HRelationMoney,HRelationQty_In," +
                      "HRelationQty_Out,HRelationQty_WWOrder,HRelationQty_Bad," +
                      "HProcNo,HProcID,HProcNumber,HWorkRemark," +
                      "HCenterID,HDeptID" +
                      ",HDeptNumber,HGroupID," +
                      "HGroupNumber,HWorkerID,HWorkerNumber,HSourceID" +
                      ",HQty,HTimeUnit,HPlanWorkTimes,HPlanBeginDate," +
                      "HPlanEndDate,HRelBeginDate" +
                      ",HRelEndDate,HReadyTime,HQueueTime,HMoveTime,HBeginDayQty,HBeginFixQty" +
                      ",HFixWorkDays,HTrunWorkDays,HReadyTimes," +
                      "HMyWorkDays,HOutPrice,HOutMoney,HPassRate" +
                      ",HLastProc,HKeyProc,HFstProc,HICMOInterID,HICMOBillNo,HWWOrderInterID," +
                      "HWWOrderEntryID,HWWOrderBillNo,HReportQty,HBackProc" +
                      ",HSupID,HSupFlag,HOverRate,HMaxQty,HTechnologyParameter,HProcCheckNote,HPicNum" +
                      ",HMouldNo,HProcWorkNum,HSeOrderInterID,HSeOrderEntryID" +
                      ") values("
                      + omodel.HInterID.ToString() + "," + oSub.HEntryID.ToString() + ",'" + omodel.HBillNo + "'" +
                      ",'" + oSub.HCloseMan + "','" + oSub.HEntryCloseDate + "'," + Convert.ToString(oSub.HCloseType ? 1 : 0) + ",'" + oSub.HRemark + "'" +
                      "," + oSub.HSourceInterID.ToString() + "," + oSub.HSourceEntryID.ToString() + ",'" + oSub.HSourceBillNo + "','" + oSub.HSourceBillType + "',"
                      + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() + "," + oSub.HRelationQty_In.ToString() + ","
                      + oSub.HRelationQty_Out.ToString() + "," + oSub.HRelationQty_WWOrder.ToString() + "," + oSub.HRelationQty_Bad.ToString() +
                      "," + oSub.HProcNo.ToString() + "," + oSub.HProcID.ToString() + ",'" + oSub.HProcNumber + "','" + oSub.HWorkRemark + "'" +
                      "," + oSub.HCenterID.ToString() + "," + oSub.HDeptID.ToString() + ",'" + oSub.HDeptNumber + "'," + oSub.HGroupID.ToString() +
                      ",'" + oSub.HGroupNumber + "'," + oSub.HWorkerID.ToString() + ",'" + oSub.HWorkerNumber + "'," + oSub.HSourceID.ToString() +
                      ",'" + oSub.HQty + "','" + oSub.HTimeUnit + "','" + oSub.HPlanWorkTimes + "','" + omodel.HPlanBeginDate.ToShortDateString() + "'" +
                      ",'" + omodel.HPlanEndDate.ToShortDateString() + "',getdate(),getdate()" +
                      "," + oSub.HReadyTime.ToString() + "," + oSub.HQueueTime.ToString() + "," + oSub.HMoveTime.ToString() + "," + oSub.HBeginDayQty.ToString() +
                      "," + oSub.HBeginFixQty.ToString() + "," + oSub.HFixWorkDays.ToString() + "," + oSub.HTrunWorkDays.ToString() + "," + oSub.HReadyTimes.ToString() +
                      "," + oSub.HMyWorkDays.ToString() + "," + oSub.HOutPrice.ToString() + "," + oSub.HOutMoney.ToString() + "," + oSub.HPassRate.ToString() + ",'" + oSub.HLastProc + "'" +
                      ",'" + oSub.HKeyProc + "','" + oSub.HFstProc + "'," + oSub.HICMOInterID.ToString() + ",'" + oSub.HICMOBillNo + "'," + oSub.HWWOrderInterID.ToString() +
                      "," + oSub.HWWOrderEntryID.ToString() + ",'" + oSub.HWWOrderBillNo + "'," + oSub.HReportQty.ToString() + "," + Convert.ToString(oSub.HBackProc ? 1 : 0) +
                      "," + oSub.HSupID.ToString() + "," + Convert.ToString(oSub.HSupFlag ? 1 : 0) + "," + oSub.HOverRate.ToString() + "," + oSub.HMaxQty.ToString() + ",'" + oSub.HTechnologyParameter + "','" + oSub.HProcCheckNote + "','" + oSub.HPicNum + "'" +
                      ",'" + oSub.HMouldNo + "','" + oSub.HProcWorkNum + "','" + DBUtility.ClsPub.isStrNull( omodel.HSeOrderInterID) + "','" + DBUtility.ClsPub.isStrNull(omodel.HSeOrderEntryID) + "'" +
                      ") ");
                    sErr = sErr + sql1 + "2;";
                    oCn.RunProc(sql1);
                    sErr = sErr + "2;";
                    //更新所选流转卡数量
                    if (!oSub.HBackProc)
                    {
                        oCn.RunProc("update Sc_ProcessExchangeBillSub set HQty=HQty-" + oSub.HQty.ToString() + " where HInterID=" + oSub.HPrevSourceInterID.ToString() + " and HEntryID=" + oSub.HPrevSourceEntryID.ToString());
                        if (oSub.HEntryID == 1)
                        {
                            oCn.RunProc("update Sc_ProcessExchangeBillMain set HQty=HQty-" + omodel.HQty.ToString() + " where HInterID=" + oSub.HPrevSourceInterID.ToString() + " ");
 
                        }
                    }
                    sErr = sErr + "3;";
                }
 
                oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_SetRemark " + omodel.HInterID.ToString()); //设置 备注 为 工艺流
                sErr = sErr + "4;";
                oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_SetUpdate " + omodel.HInterID.ToString()); //设置 末道 首道 转 等信息   器具清单  工艺参数清单;
                sErr = sErr + "5;";
                DataSet ds = new DataSet();
                //设置条码号  回填 领料批次
                ds = oCn.RunProcReturn("exec h_p_Mes_ProcessExchangeBackBarCode " + omodel.HInterID.ToString(), "h_p_Mes_ProcessExchangeBackBarCode");
                if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                {
                    sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                    oCn.RollBack();
                    return false;
                }
 
                sErr = sErr + "6;";
 
                //oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_SetDate " + omodel.HInterID.ToString());  //回填 开工完工日期 
                //oCn.RunProc("exec h_p_Sc_ProcessExchangeBill_RelationQty " + omodel.HInterID.ToString() + ",1"); //返工流转卡 反写 拆分数量  回填任务单 流转卡数量  回填任务单上限数量
 
                //控制关联数量
                ds = null;
                ds = oCn.RunProcReturn("exec h_p_Sc_ProcessExchangeBill_Checkqty " + omodel.HInterID.ToString(), "h_p_Sc_ProcessExchangeBill_Checkqty");
                if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                {
                    sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                    oCn.RollBack();
                    return false;
                }
 
                sErr = sErr + "7;";
 
                //
                sReturn = "新增单据成功!";
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sReturn = sErr + "," +  e.Message;
                oCn.RollBack();
                throw (e);
            }
        }
        //显示单据
        public override bool ShowBill(Int64 lngBillKey, ref string sReturn)
        {
            try
            {
                //查询主表
                DataSet Ds;
                Ds = oCn.RunProcReturn("Select * from Sc_ProcessExchangeBillMain Where HInterID=" + lngBillKey.ToString()+" and HPRDORGID=" + DBUtility.ClsPub.HOrgID + " ", "Sc_ProcessExchangeBillMain");
                if (Ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "单据未找到!";
                    return false;
                }
                //固定赋值===========================================
                omodel.HInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"]);
                omodel.HBillNo = Ds.Tables[0].Rows[0]["HBillNo"].ToString().Trim();
                omodel.HDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HDate"]);
                omodel.HYear = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HYear"]);
                omodel.HPeriod = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HPeriod"]);
                omodel.HCheckItemNowID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckItemNowID"]);
                omodel.HCheckItemNextID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckItemNextID"]);
                omodel.HCheckFlowID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckFlowID"]);
                omodel.HRemark = Ds.Tables[0].Rows[0]["HRemark"].ToString().Trim();
                omodel.HBillStatus = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HBillStatus"]);
                omodel.HBillType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillType"]);
                omodel.HBillSubType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillSubType"]);
                omodel.HMaker = Ds.Tables[0].Rows[0]["HMaker"].ToString().Trim();
                omodel.HMakeDate = Ds.Tables[0].Rows[0]["HMakeDate"].ToString().Trim();
                omodel.HUpDateDate = Ds.Tables[0].Rows[0]["HUpDateDate"].ToString().Trim();
                omodel.HUpDater = Ds.Tables[0].Rows[0]["HUpDater"].ToString().Trim();
                omodel.HBackDate = Ds.Tables[0].Rows[0]["HBackDate"].ToString().Trim();
                omodel.HBacker = Ds.Tables[0].Rows[0]["HBacker"].ToString().Trim();
                omodel.HCheckDate = Ds.Tables[0].Rows[0]["HCheckDate"].ToString().Trim();
                omodel.HChecker = Ds.Tables[0].Rows[0]["HChecker"].ToString().Trim();
                omodel.HCloseDate = Ds.Tables[0].Rows[0]["HCloseDate"].ToString().Trim();
                omodel.HCloseMan = Ds.Tables[0].Rows[0]["HCloseMan"].ToString().Trim();
                omodel.HDeleteDate = Ds.Tables[0].Rows[0]["HDeleteDate"].ToString().Trim();
                omodel.HDeleteMan = Ds.Tables[0].Rows[0]["HDeleteMan"].ToString().Trim();
                //========================================================
                omodel.HWWOrderInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWWOrderInterID"]);
                omodel.HWWOrderEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWWOrderEntryID"]);
                omodel.HWWOrderBillNo = Ds.Tables[0].Rows[0]["HWWOrderBillNo"].ToString().Trim();
                omodel.HICMOInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HICMOInterID"]);
                omodel.HICMOEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HICMOEntryID"]);
                omodel.HICMOBillNo = Ds.Tables[0].Rows[0]["HICMOBillNo"].ToString().Trim();
                omodel.HBatchNo = Ds.Tables[0].Rows[0]["HBatchNo"].ToString().Trim();
                omodel.HMaterID2 = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMaterID2"]);
                omodel.HMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMaterID"]);
                omodel.HMaterNumber = Ds.Tables[0].Rows[0]["HMaterNumber"].ToString().Trim();
                omodel.HUnitID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HUnitID"]);
                omodel.HUnitNumber = Ds.Tables[0].Rows[0]["HUnitNumber"].ToString().Trim();
                omodel.HPlanQty = DBUtility.ClsPub.isDoule(Ds.Tables[0].Rows[0]["HPlanQty"]);
                omodel.HQty = DBUtility.ClsPub.isDoule(Ds.Tables[0].Rows[0]["HQty"]);
                omodel.HPlanBeginDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HPlanBeginDate"]);
                omodel.HPlanEndDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HPlanEndDate"]);
                omodel.HExplanation = Ds.Tables[0].Rows[0]["HExplanation"].ToString().Trim();
                omodel.HInnerBillNo = Ds.Tables[0].Rows[0]["HInnerBillNo"].ToString().Trim();
                omodel.HSupID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HSupID"]);
                omodel.HWorkShopID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWorkShopID"]);
                //===============
                omodel.HWorkTypeNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HWorkTypeNum"]);
                omodel.HworkYypeName = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HworkYypeName"]);
                omodel.HMainMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMainMaterID"]);
                omodel.HKeyMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HKeyMaterID"]);
                omodel.HOrderProcNO = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HOrderProcNO"]);
                omodel.HMateOutBatchNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMateOutBatchNo"]);
                omodel.HBLFlag = DBUtility.ClsPub.isBool(Ds.Tables[0].Rows[0]["HBLFlag"]);
                omodel.HEquipMentID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HEquipMentID"]);
                omodel.HProjectNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProjectNum"]);
                //===============
                omodel.HPicNumVer = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HPicNumVer"]);
                omodel.HPicNumAssemble = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HPicNumAssemble"]);
                omodel.HMaterTexture = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterTexture"]);
                omodel.HProductNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProductNum"]);
                omodel.HVerNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HVerNum"]);
                //
                //循环
                DataSet DsSub;
                DsSub = oCn.RunProcReturn("Select * from Sc_ProcessExchangeBillSub Where HInterID=" + lngBillKey.ToString() + " order by HprocNo ", "Sc_ProcessExchangeBillSub");
                DetailColl.Clear();//清空
                for (int i = 0; i < DsSub.Tables[0].Rows.Count; i++)
                {
                    Model.ClsSc_ProcessExchangeBillSub oSub = new Model.ClsSc_ProcessExchangeBillSub();
                    // 固定赋值===============================================
                    oSub.HInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HInterID"]);
                    oSub.HBillNo_bak = DsSub.Tables[0].Rows[i]["HBillNo_bak"].ToString().Trim();
                    oSub.HEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HEntryID"]);
                    oSub.HSourceInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceInterID"]);
                    oSub.HSourceEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceEntryID"]);
                    oSub.HSourceBillType = DsSub.Tables[0].Rows[i]["HSourceBillType"].ToString().Trim();
                    oSub.HSourceBillNo = DsSub.Tables[0].Rows[i]["HSourceBillNo"].ToString().Trim();
                    oSub.HRelationQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty"]);
                    oSub.HRelationMoney = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationMoney"]);
                    oSub.HRelationQty_In = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_In"]);
                    oSub.HRelationQty_Out = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_Out"]);
                    oSub.HRelationQty_WWOrder = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_WWOrder"]);
                    oSub.HRelationQty_Bad = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_Bad"]);
                    oSub.HCloseMan = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HCloseMan"]);
                    oSub.HCloseType = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HCloseType"]);
                    oSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[i]["HEntryCloseDate"]);
                    oSub.HRemark = DsSub.Tables[0].Rows[i]["HRemark"].ToString().Trim();
                    //===================================================
                    oSub.HProcNo = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HProcNo"]);
                    oSub.HProcID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HProcID"]);
                    oSub.HProcNumber = DsSub.Tables[0].Rows[i]["HProcNumber"].ToString().Trim();
                    oSub.HWorkRemark = DsSub.Tables[0].Rows[i]["HWorkRemark"].ToString().Trim();
                    oSub.HCenterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HCenterID"]);
                    oSub.HDeptID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HDeptID"]);
                    oSub.HDeptNumber = DsSub.Tables[0].Rows[i]["HDeptNumber"].ToString().Trim();
                    oSub.HGroupID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HGroupID"]);
                    oSub.HGroupNumber = DsSub.Tables[0].Rows[i]["HGroupNumber"].ToString().Trim();
                    oSub.HWorkerID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWorkerID"]);
                    oSub.HWorkerNumber = DsSub.Tables[0].Rows[i]["HWorkerNumber"].ToString().Trim();
                    oSub.HSourceID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceID"]);
                    oSub.HQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HQty"]);
                    oSub.HTimeUnit = DsSub.Tables[0].Rows[i]["HTimeUnit"].ToString().Trim();
                    oSub.HPlanWorkTimes = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HPlanWorkTimes"]);
                    oSub.HPlanBeginDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HPlanBeginDate"]);
                    oSub.HPlanEndDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HPlanEndDate"]);
                    oSub.HRelBeginDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HRelBeginDate"]);
                    oSub.HRelEndDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HRelEndDate"]);
                    oSub.HReadyTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HReadyTime"]);
                    oSub.HQueueTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HQueueTime"]);
                    oSub.HMoveTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HMoveTime"]);
                    oSub.HBeginDayQty = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HBeginDayQty"]);
                    oSub.HBeginFixQty = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HBeginFixQty"]);
                    oSub.HFixWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HFixWorkDays"]);
                    oSub.HTrunWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HTrunWorkDays"]);
                    oSub.HReadyTimes = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HReadyTimes"]);
                    oSub.HMyWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HMyWorkDays"]);
                    oSub.HOutPrice = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HOutPrice"]);
                    oSub.HOutMoney = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HOutMoney"]);
                    oSub.HLastProc = DsSub.Tables[0].Rows[i]["HLastProc"].ToString().Trim();
                    oSub.HFstProc = DsSub.Tables[0].Rows[i]["HFstProc"].ToString().Trim();
                    oSub.HKeyProc = DsSub.Tables[0].Rows[i]["HKeyProc"].ToString().Trim();
                    oSub.HICMOInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HICMOInterID"]);
                    oSub.HICMOBillNo = DsSub.Tables[0].Rows[i]["HICMOBillNo"].ToString().Trim();
                    oSub.HWWOrderInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWWOrderInterID"]);
                    oSub.HWWOrderEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWWOrderEntryID"]);
                    oSub.HWWOrderBillNo = DsSub.Tables[0].Rows[i]["HWWOrderBillNo"].ToString().Trim();
                    oSub.HReportQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HReportQty"]);
                    oSub.HPassRate = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HPassRate"]);
                    oSub.HSupID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HSupID"]);
                    oSub.HSupFlag = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HSupFlag"]);
                    oSub.HKeyProc = DsSub.Tables[0].Rows[i]["HKeyProc"].ToString().Trim();
                    oSub.HICMOEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HICMOEntryID"]);
                    oSub.HBackProc = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HBackProc"]);
                    oSub.HOverRate = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HOverRate"]);
                    oSub.HMaxQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HMaxQty"]);
                    oSub.HTechnologyParameter = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HTechnologyParameter"]);
                    oSub.HPicNum = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HPicNum"]);
                    oSub.HProcCheckNote = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HProcCheckNote"]);
                    oSub.HMouldNo = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HMouldNo"]);
                    oSub.HProcWorkNum = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HProcWorkNum"]);
 
                    DetailColl.Add(oSub);
                }
                sReturn = "显示单据成功!";
                return true;
            }
            catch (Exception e)
            {
                sReturn = e.Message;
                throw (e);
            }
        }
 
        //判断是否允许删除
        /// <summary>
        /// 判断是否允许删除
        /// </summary>
        /// <param name="lngBillKey"></param>
        /// <param name="sReturn"></param>
        /// <returns></returns>
        public bool Fun_AllowDeleteBill(Int64 lngBillKey, ref string sReturn)
        {
            try
            {
                //有关联数量则不允许删除
                DataSet ds;
                ds = oCn.RunProcReturn("exec h_p_Mes_ProcExchDeleteCtrl " + lngBillKey.ToString(), "h_p_Mes_ProcExchDeleteCtrl");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "判断关联数量失败,260行!  ";
                    return false;
                }
                if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                {
                    sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                    return false;
                }
                return true;
            }
            catch (Exception e)
            {
                sReturn = "判断关联数量失败,272行," + e.Message;
                return false;
            }
        }
 
        //显示单据
        public bool ShowBill(Int64 lngBillKey, ref string sReturn, bool bBack)
        {
            try
            {
                //查询主表
                DataSet Ds;
                Ds = oCn.RunProcReturn("Select * from Sc_ProcessExchangeBillMain Where HInterID=" + lngBillKey.ToString(), "Sc_ProcessExchangeBillMain");
                if (Ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "单据未找到!";
                    return false;
                }
                //固定赋值===========================================
                omodel.HInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"]);
                omodel.HBillNo = Ds.Tables[0].Rows[0]["HBillNo"].ToString().Trim();
                omodel.HDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HDate"]);
                omodel.HYear = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HYear"]);
                omodel.HPeriod = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HPeriod"]);
                omodel.HCheckItemNowID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckItemNowID"]);
                omodel.HCheckItemNextID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckItemNextID"]);
                omodel.HCheckFlowID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckFlowID"]);
                omodel.HRemark = Ds.Tables[0].Rows[0]["HRemark"].ToString().Trim();
                omodel.HBillStatus = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HBillStatus"]);
                omodel.HBillType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillType"]);
                omodel.HBillSubType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillSubType"]);
                omodel.HMaker = Ds.Tables[0].Rows[0]["HMaker"].ToString().Trim();
                omodel.HMakeDate = Ds.Tables[0].Rows[0]["HMakeDate"].ToString().Trim();
                omodel.HUpDateDate = Ds.Tables[0].Rows[0]["HUpDateDate"].ToString().Trim();
                omodel.HUpDater = Ds.Tables[0].Rows[0]["HUpDater"].ToString().Trim();
                omodel.HBackDate = Ds.Tables[0].Rows[0]["HBackDate"].ToString().Trim();
                omodel.HBacker = Ds.Tables[0].Rows[0]["HBacker"].ToString().Trim();
                omodel.HCheckDate = Ds.Tables[0].Rows[0]["HCheckDate"].ToString().Trim();
                omodel.HChecker = Ds.Tables[0].Rows[0]["HChecker"].ToString().Trim();
                omodel.HCloseDate = Ds.Tables[0].Rows[0]["HCloseDate"].ToString().Trim();
                omodel.HCloseMan = Ds.Tables[0].Rows[0]["HCloseMan"].ToString().Trim();
                omodel.HDeleteDate = Ds.Tables[0].Rows[0]["HDeleteDate"].ToString().Trim();
                omodel.HDeleteMan = Ds.Tables[0].Rows[0]["HDeleteMan"].ToString().Trim();
                //========================================================
                omodel.HWWOrderInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWWOrderInterID"]);
                omodel.HWWOrderEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWWOrderEntryID"]);
                omodel.HWWOrderBillNo = Ds.Tables[0].Rows[0]["HWWOrderBillNo"].ToString().Trim();
                omodel.HICMOInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HICMOInterID"]);
                omodel.HICMOEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HICMOEntryID"]);
                omodel.HICMOBillNo = Ds.Tables[0].Rows[0]["HICMOBillNo"].ToString().Trim();
                omodel.HBatchNo = Ds.Tables[0].Rows[0]["HBatchNo"].ToString().Trim();
                omodel.HMaterID2 = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMaterID2"]);
                omodel.HMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMaterID"]);
                omodel.HMaterNumber = Ds.Tables[0].Rows[0]["HMaterNumber"].ToString().Trim();
                omodel.HUnitID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HUnitID"]);
                omodel.HUnitNumber = Ds.Tables[0].Rows[0]["HUnitNumber"].ToString().Trim();
                omodel.HPlanQty = DBUtility.ClsPub.isDoule(Ds.Tables[0].Rows[0]["HPlanQty"]);
                omodel.HQty = DBUtility.ClsPub.isDoule(Ds.Tables[0].Rows[0]["HQty"]);
                omodel.HPlanBeginDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HPlanBeginDate"]);
                omodel.HPlanEndDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HPlanEndDate"]);
                omodel.HExplanation = Ds.Tables[0].Rows[0]["HExplanation"].ToString().Trim();
                omodel.HInnerBillNo = Ds.Tables[0].Rows[0]["HInnerBillNo"].ToString().Trim();
                omodel.HSupID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HSupID"]);
                omodel.HWorkShopID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWorkShopID"]);
 
 
                omodel.HWorkTypeNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HWorkTypeNum"]);
                omodel.HworkYypeName = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HworkYypeName"]);
 
                omodel.HMainMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMainMaterID"]);
                omodel.HKeyMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HKeyMaterID"]);
                omodel.HPrevMainSourceInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HPrevMainSourceInterID"]);
                omodel.HMainSourceBillNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMainSourceBillNo"]);
                omodel.HMainSourceBillType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMainSourceBillType"]);
                omodel.HMainSourceInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMainSourceInterID"]);
                omodel.HMainSourceEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMainSourceEntryID"]);
                omodel.HOrderProcNO = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HOrderProcNO"]);
                omodel.HMateOutBatchNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMateOutBatchNo"]);
                omodel.HBLFlag = DBUtility.ClsPub.isBool(Ds.Tables[0].Rows[0]["HBLFlag"]);
                omodel.HEquipMentID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HEquipMentID"]);
                omodel.HProjectNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProjectNum"]);
 
                omodel.HProdMaterCode = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProdMaterCode"]);
                omodel.HSeOrderBillNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HSeOrderBillNo"]);
                omodel.HCusShortName = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HCusShortName"]);
                omodel.HCusNeedMaterial = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HCusNeedMaterial"]);
                omodel.HPlanSendGoodsDate = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HPlanSendGoodsDate"]);
                omodel.HProdMaterName = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProdMaterName"]);
                omodel.HCusName = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HCusName"]);
                omodel.HWorkRemark = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HWorkRemark"]);
                omodel.HImportNote = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HImportNote"]);
                omodel.HMaterNumber_A = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterNumber_A"]);
                omodel.HMaterNumber_B = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterNumber_B"]);
                omodel.HMaterNumber_C = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterNumber_C"]);
                omodel.HMaterNumber_D = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterNumber_D"]);
                omodel.HProdType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProdType"]);
                omodel.HMaterShortName = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterShortName"]);
                omodel.HMaterIDA = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterIDA"]);
                omodel.HMaterIDB = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterIDB"]);
                omodel.HMaterIDC = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterIDC"]);
                omodel.HMaterIDD = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterIDD"]);
                omodel.HPicNumVer = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HPicNumVer"]);
                omodel.HPicNumAssemble = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HPicNumAssemble"]);
                omodel.HMaterTexture = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaterTexture"]);
                omodel.HVerNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HVerNum"]);
                omodel.HProductNum = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProductNum"]);
                //循环
                DataSet DsSub;
                if (bBack)
                {
                    DsSub = oCn.RunProcReturn("Select * from h_v_Sc_ProcessExchangeBillSub_split Where  HInterID=" + lngBillKey.ToString(), "h_v_Sc_ProcessExchangeBillSub_split");
                }
                else
                {
                    DsSub = oCn.RunProcReturn("Select * from Sc_ProcessExchangeBillSub Where HInterID=" + lngBillKey.ToString() + " order by HprocNo ", "Sc_ProcessExchangeBillSub");
                }
                //DsSub = oCn.RunProcReturn("Select * from Sc_ProcessExchangeBillSub Where HInterID=" + lngBillKey.ToString(), "Sc_ProcessExchangeBillSub");
                DetailColl.Clear();//清空
                for (int i = 0; i < DsSub.Tables[0].Rows.Count; i++)
                {
                    Model.ClsSc_ProcessExchangeBillSub oSub = new Model.ClsSc_ProcessExchangeBillSub();
                    // 固定赋值===============================================
                    oSub.HInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HInterID"]);
                    oSub.HBillNo_bak = DsSub.Tables[0].Rows[i]["HBillNo_bak"].ToString().Trim();
                    oSub.HEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HEntryID"]);
                    oSub.HSourceInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceInterID"]);
                    oSub.HSourceEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceEntryID"]);
                    oSub.HSourceBillType = DsSub.Tables[0].Rows[i]["HSourceBillType"].ToString().Trim();
                    oSub.HSourceBillNo = DsSub.Tables[0].Rows[i]["HSourceBillNo"].ToString().Trim();
                    oSub.HRelationQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty"]);
                    oSub.HRelationMoney = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationMoney"]);
                    oSub.HRelationQty_In = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_In"]);
                    oSub.HRelationQty_Out = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_Out"]);
                    oSub.HRelationQty_WWOrder = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_WWOrder"]);
                    oSub.HRelationQty_Bad = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_Bad"]);
                    oSub.HCloseMan = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HCloseMan"]);
                    oSub.HCloseType = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HCloseType"]);
                    oSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[i]["HEntryCloseDate"]);
                    oSub.HRemark = DsSub.Tables[0].Rows[i]["HRemark"].ToString().Trim();
                    //===================================================
                    oSub.HProcNo = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HProcNo"]);
                    oSub.HProcID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HProcID"]);
                    oSub.HBackProc = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HBackProc"]);
                    oSub.HProcNumber = DsSub.Tables[0].Rows[i]["HProcNumber"].ToString().Trim();
                    oSub.HWorkRemark = DsSub.Tables[0].Rows[i]["HWorkRemark"].ToString().Trim();
                    oSub.HCenterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HCenterID"]);
                    oSub.HDeptID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HDeptID"]);
                    oSub.HDeptNumber = DsSub.Tables[0].Rows[i]["HDeptNumber"].ToString().Trim();
                    oSub.HGroupID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HGroupID"]);
                    oSub.HGroupNumber = DsSub.Tables[0].Rows[i]["HGroupNumber"].ToString().Trim();
                    oSub.HWorkerID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWorkerID"]);
                    oSub.HWorkerNumber = DsSub.Tables[0].Rows[i]["HWorkerNumber"].ToString().Trim();
                    oSub.HSourceID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceID"]);
                    oSub.HQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HQty"]);
                    oSub.HTimeUnit = DsSub.Tables[0].Rows[i]["HTimeUnit"].ToString().Trim();
                    oSub.HPlanWorkTimes = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HPlanWorkTimes"]);
                    oSub.HPlanBeginDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HPlanBeginDate"]);
                    oSub.HPlanEndDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HPlanEndDate"]);
                    oSub.HRelBeginDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HRelBeginDate"]);
                    oSub.HRelEndDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HRelEndDate"]);
                    oSub.HReadyTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HReadyTime"]);
                    oSub.HQueueTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HQueueTime"]);
                    oSub.HMoveTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HMoveTime"]);
                    oSub.HBeginDayQty = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HBeginDayQty"]);
                    oSub.HBeginFixQty = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HBeginFixQty"]);
                    oSub.HFixWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HFixWorkDays"]);
                    oSub.HTrunWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HTrunWorkDays"]);
                    oSub.HReadyTimes = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HReadyTimes"]);
                    oSub.HMyWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HMyWorkDays"]);
                    oSub.HOutPrice = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HOutPrice"]);
                    oSub.HOutMoney = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HOutMoney"]);
                    oSub.HLastProc = DsSub.Tables[0].Rows[i]["HLastProc"].ToString().Trim();
                    oSub.HFstProc = DsSub.Tables[0].Rows[i]["HFstProc"].ToString().Trim();
                    oSub.HKeyProc = DsSub.Tables[0].Rows[i]["HKeyProc"].ToString().Trim();
                    oSub.HICMOInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HICMOInterID"]);
                    oSub.HICMOBillNo = DsSub.Tables[0].Rows[i]["HICMOBillNo"].ToString().Trim();
                    oSub.HWWOrderInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWWOrderInterID"]);
                    oSub.HWWOrderEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWWOrderEntryID"]);
                    oSub.HWWOrderBillNo = DsSub.Tables[0].Rows[i]["HWWOrderBillNo"].ToString().Trim();
                    oSub.HPassRate = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HPassRate"]);
                    oSub.HSupID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HSupID"]);
                    oSub.HSupFlag = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HSupFlag"]);
                    oSub.HKeyProc = DsSub.Tables[0].Rows[i]["HKeyProc"].ToString().Trim();
                    oSub.HICMOEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HICMOEntryID"]);
                    oSub.HLeftQty = 0;
                    oSub.HReportQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HReportQty"]);
                    if (bBack)
                    {
                        oSub.HReportQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HReportQty2"]);
                        oSub.HLeftQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HLeftQty"]);
                    }
                    //
                    oSub.HOverRate = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HOverRate"]);
                    oSub.HMaxQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HMaxQty"]);
                    oSub.HTechnologyParameter = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HTechnologyParameter"]);
                    oSub.HPicNum = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HPicNum"]);
                    oSub.HProcCheckNote = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HProcCheckNote"]);
                    oSub.HMouldNo = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HMouldNo"]);
                    oSub.HProcWorkNum = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HProcWorkNum"]);
                    DetailColl.Add(oSub);
                }
                sReturn = "显示单据成功!";
                return true;
            }
            catch (Exception e)
            {
                sReturn = this.MvarItemKey +  "显示单据失败!"  +  e.Message;
                throw (e);
            }
        }
 
 
        //显示单据_拆分
        public bool ShowBill_CF(Int64 lngBillKey, ref string sReturn)
        {
            try
            {
                //查询主表
                DataSet Ds;
                Ds = oCn.RunProcReturn("Select * from Sc_ProcessExchangeBillMain Where HInterID=" + lngBillKey.ToString(), "Sc_ProcessExchangeBillMain");
                if (Ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "单据未找到!";
                    return false;
                }
                //固定赋值===========================================
                omodel.HInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"]);
                omodel.HBillNo = Ds.Tables[0].Rows[0]["HBillNo"].ToString().Trim();
                omodel.HDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HDate"]);
                omodel.HYear = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HYear"]);
                omodel.HPeriod = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HPeriod"]);
                omodel.HCheckItemNowID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckItemNowID"]);
                omodel.HCheckItemNextID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckItemNextID"]);
                omodel.HCheckFlowID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCheckFlowID"]);
                omodel.HRemark = Ds.Tables[0].Rows[0]["HRemark"].ToString().Trim();
                omodel.HBillStatus = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HBillStatus"]);
                omodel.HBillType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillType"]);
                omodel.HBillSubType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillSubType"]);
                omodel.HMaker = Ds.Tables[0].Rows[0]["HMaker"].ToString().Trim();
                omodel.HMakeDate = Ds.Tables[0].Rows[0]["HMakeDate"].ToString().Trim();
                omodel.HUpDateDate = Ds.Tables[0].Rows[0]["HUpDateDate"].ToString().Trim();
                omodel.HUpDater = Ds.Tables[0].Rows[0]["HUpDater"].ToString().Trim();
                omodel.HBackDate = Ds.Tables[0].Rows[0]["HBackDate"].ToString().Trim();
                omodel.HBacker = Ds.Tables[0].Rows[0]["HBacker"].ToString().Trim();
                omodel.HCheckDate = Ds.Tables[0].Rows[0]["HCheckDate"].ToString().Trim();
                omodel.HChecker = Ds.Tables[0].Rows[0]["HChecker"].ToString().Trim();
                omodel.HCloseDate = Ds.Tables[0].Rows[0]["HCloseDate"].ToString().Trim();
                omodel.HCloseMan = Ds.Tables[0].Rows[0]["HCloseMan"].ToString().Trim();
                omodel.HDeleteDate = Ds.Tables[0].Rows[0]["HDeleteDate"].ToString().Trim();
                omodel.HDeleteMan = Ds.Tables[0].Rows[0]["HDeleteMan"].ToString().Trim();
                //========================================================
                //==
                omodel.HWWOrderInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWWOrderInterID"]);
                omodel.HWWOrderEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWWOrderEntryID"]);
                omodel.HWWOrderBillNo = Ds.Tables[0].Rows[0]["HWWOrderBillNo"].ToString().Trim();
                omodel.HICMOInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HICMOInterID"]);
                omodel.HICMOEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HICMOEntryID"]);
                omodel.HICMOBillNo = Ds.Tables[0].Rows[0]["HICMOBillNo"].ToString().Trim();
                omodel.HBatchNo = Ds.Tables[0].Rows[0]["HBatchNo"].ToString().Trim();
                omodel.HMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HMaterID"]);
                omodel.HMaterNumber = Ds.Tables[0].Rows[0]["HMaterNumber"].ToString().Trim();
                omodel.HUnitID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HUnitID"]);
                omodel.HUnitNumber = Ds.Tables[0].Rows[0]["HUnitNumber"].ToString().Trim();
                omodel.HPlanQty = DBUtility.ClsPub.isDoule(Ds.Tables[0].Rows[0]["HPlanQty"]);
                omodel.HPlanBeginDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HPlanBeginDate"]);
                omodel.HPlanEndDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HPlanEndDate"]);
                omodel.HExplanation = Ds.Tables[0].Rows[0]["HExplanation"].ToString().Trim();
                omodel.HInnerBillNo = Ds.Tables[0].Rows[0]["HInnerBillNo"].ToString().Trim();
                omodel.HSupID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HSupID"]);
                omodel.HWorkShopID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HWorkShopID"]);
                omodel.HOrderProcNO = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HOrderProcNO"]);
                omodel.HMateOutBatchNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMateOutBatchNo"]);
                omodel.HBLFlag = DBUtility.ClsPub.isBool(Ds.Tables[0].Rows[0]["HBLFlag"]);
                omodel.HEquipMentID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HEquipMentID"]);
                //
 
                //循环
                DataSet DsSub;
                DsSub = oCn.RunProcReturn("select * from h_v_Sc_ProcessExchangeBillSub_CF Where HInterID=" + lngBillKey.ToString(), "Sc_ProcessExchangeBillSub");
                DetailColl.Clear();//清空
                for (int i = 0; i < DsSub.Tables[0].Rows.Count; i++)
                {
                    Model.ClsSc_ProcessExchangeBillSub oSub = new Model.ClsSc_ProcessExchangeBillSub();
                    // 固定赋值===============================================
                    oSub.HInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HInterID"]);
                    oSub.HBillNo_bak = DsSub.Tables[0].Rows[i]["HBillNo_bak"].ToString().Trim();
                    oSub.HEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HEntryID"]);
                    oSub.HSourceInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceInterID"]);
                    oSub.HSourceEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceEntryID"]);
                    oSub.HSourceBillType = DsSub.Tables[0].Rows[i]["HSourceBillType"].ToString().Trim();
                    oSub.HSourceBillNo = DsSub.Tables[0].Rows[i]["HSourceBillNo"].ToString().Trim();
                    oSub.HRelationQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty"]);
                    oSub.HRelationMoney = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationMoney"]);
                    oSub.HRelationQty_In = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_In"]);
                    oSub.HRelationQty_Out = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_Out"]);
                    oSub.HRelationQty_WWOrder = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_WWOrder"]);
                    oSub.HRelationQty_Bad = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty_Bad"]);
                    oSub.HCloseMan = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HCloseMan"]);
                    oSub.HCloseType = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HCloseType"]);
                    oSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[i]["HEntryCloseDate"]);
                    oSub.HRemark = DsSub.Tables[0].Rows[i]["HRemark"].ToString().Trim();
                    //===================================================
                    oSub.HProcNo = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HProcNo"]);
                    oSub.HProcID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HProcID"]);
                    oSub.HProcNumber = DsSub.Tables[0].Rows[i]["HProcNumber"].ToString().Trim();
                    oSub.HWorkRemark = DsSub.Tables[0].Rows[i]["HWorkRemark"].ToString().Trim();
                    oSub.HCenterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HCenterID"]);
                    oSub.HDeptID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HDeptID"]);
                    oSub.HDeptNumber = DsSub.Tables[0].Rows[i]["HDeptNumber"].ToString().Trim();
                    oSub.HGroupID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HGroupID"]);
                    oSub.HGroupNumber = DsSub.Tables[0].Rows[i]["HGroupNumber"].ToString().Trim();
                    oSub.HWorkerID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWorkerID"]);
                    oSub.HWorkerNumber = DsSub.Tables[0].Rows[i]["HWorkerNumber"].ToString().Trim();
                    oSub.HSourceID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HSourceID"]);
                    oSub.HQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HCFQty"]); //----可拆分数量
                    oSub.HTimeUnit = DsSub.Tables[0].Rows[i]["HTimeUnit"].ToString().Trim();
                    oSub.HPlanWorkTimes = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HPlanWorkTimes"]);
                    oSub.HPlanBeginDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HPlanBeginDate"]);
                    oSub.HPlanEndDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HPlanEndDate"]);
                    oSub.HRelBeginDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HRelBeginDate"]);
                    oSub.HRelEndDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[0]["HRelEndDate"]);
                    oSub.HReadyTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HReadyTime"]);
                    oSub.HQueueTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HQueueTime"]);
                    oSub.HMoveTime = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HMoveTime"]);
                    oSub.HBeginDayQty = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HBeginDayQty"]);
                    oSub.HBeginFixQty = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HBeginFixQty"]);
                    oSub.HFixWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HFixWorkDays"]);
                    oSub.HTrunWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HTrunWorkDays"]);
                    oSub.HReadyTimes = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HReadyTimes"]);
                    oSub.HMyWorkDays = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HMyWorkDays"]);
                    oSub.HOutPrice = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HOutPrice"]);
                    oSub.HOutMoney = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HOutMoney"]);
                    oSub.HLastProc = DsSub.Tables[0].Rows[i]["HLastProc"].ToString().Trim();
                    oSub.HFstProc = DsSub.Tables[0].Rows[i]["HFstProc"].ToString().Trim();
                    oSub.HICMOInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HICMOInterID"]);
                    oSub.HICMOBillNo = DsSub.Tables[0].Rows[i]["HICMOBillNo"].ToString().Trim();
                    oSub.HWWOrderInterID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWWOrderInterID"]);
                    oSub.HWWOrderEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HWWOrderEntryID"]);
                    oSub.HWWOrderBillNo = DsSub.Tables[0].Rows[i]["HWWOrderBillNo"].ToString().Trim();
                    oSub.HPassRate = DBUtility.ClsPub.isSingle(DsSub.Tables[0].Rows[i]["HPassRate"]);
 
                    oSub.HSupID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HSupID"]);
                    oSub.HSupFlag = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HSupFlag"]);
                    oSub.HKeyProc = DsSub.Tables[0].Rows[i]["HKeyProc"].ToString().Trim();
                    oSub.HICMOEntryID = DBUtility.ClsPub.isLong(DsSub.Tables[0].Rows[i]["HICMOEntryID"]);
                    oSub.HBackProc = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HBackProc"]);
                    oSub.HOverRate = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HOverRate"]);
                    oSub.HMaxQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HMaxQty"]); 
                    oSub.HTechnologyParameter = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HTechnologyParameter"]);
                    oSub.HPicNum = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HPicNum"]);
                    oSub.HProcCheckNote = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HProcCheckNote"]);
                    DetailColl.Add(oSub);
                }
                sReturn = "显示单据成功!";
                return true;
            }
            catch (Exception e)
            {
                sReturn = e.Message;
                throw (e);
            }
        }
 
        //更新打印次数
        public bool Set_PrintQty(long sInterID)
        {
            try
            {
                oCn.BeginTran();
                //更新 打印次数
                oCn.RunProc("update Sc_ProcessExchangeBillMain set HPrintQty=isnull(HPrintQty,0)+1 where HInterID=" + sInterID.ToString(), ref DBUtility.ClsPub.sExeReturnInfo);
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                oCn.RollBack();
                throw (e);
            }
        }
 
    }
 
}