123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- unit stgGclGatherDm;
- // ½á¹ûչʾ£¬ÄÚ´æ±í
- interface
- uses
- SysUtils, Classes, stgGatherGclCacheData, sdDB, sdProvider, stgGatherUtils;
- type
- TstgGclGatherData = class(TDataModule)
- smpGatherGcl: TsdMemoryProvider;
- sddGatherGcl: TsdDataSet;
- sdvGatherGcl: TsdDataView;
- smpSubTenders: TsdMemoryProvider;
- sddSubTenders: TsdDataSet;
- sdvSubTenders: TsdDataView;
- smpBillsDetail: TsdMemoryProvider;
- sddBillsDetail: TsdDataSet;
- sdvBillsDetail: TsdDataView;
- sdmErrorDetail: TsdMemoryProvider;
- sddErrorDetail: TsdDataSet;
- sdvErrorDetail: TsdDataView;
- procedure sdvBillsDetailGetText(var Text: String;
- ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
- DisplayText: Boolean);
- procedure sdvBillsDetailFilterRecord(ARecord: TsdDataRecord;
- var Allow: Boolean);
- procedure sdvGatherGclCurrentChanged(ARecord: TsdDataRecord);
- procedure sdvGatherGclGetText(var Text: String;
- ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
- DisplayText: Boolean);
- procedure sdvErrorDetailFilterRecord(ARecord: TsdDataRecord;
- var Allow: Boolean);
- procedure sdvSubTendersCurrentChanged(ARecord: TsdDataRecord);
- procedure sdvErrorDetailGetText(var Text: String;
- ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
- DisplayText: Boolean);
- private
- procedure LoadSubTenders(ACacheData: TstgGatherGclCacheData);
- procedure LoadGatherGclDetail(AGcl: TstgGatherGcl);
- procedure LoadGatherGcl(AGcl: TstgGatherGcl);
- procedure LoadGatherGcls(ACacheData: TstgGatherGclCacheData);
- public
- procedure LoadGatherData(ACacheData: TstgGatherGclCacheData);
- end;
- implementation
- uses
- Variants, DB, ConditionalDefines;
- {$R *.dfm}
- { TstgGatherData }
- procedure TstgGclGatherData.LoadGatherData(ACacheData: TstgGatherGclCacheData);
- begin
- LoadSubTenders(ACacheData);
- LoadGatherGcls(ACacheData);
-
- if not Assigned(sddGatherGcl.FindIndex('idxIndexCode')) then
- sddGatherGcl.AddIndex('idxIndexCode', 'IndexCode');
- sdvGatherGcl.Active := True;
- sdvGatherGcl.IndexName := 'idxIndexCode';
- sdvBillsDetail.Active := True;
- sdvBillsDetail.RefreshFilter;
- sdvSubTenders.Active := True;
- end;
- procedure TstgGclGatherData.LoadGatherGcls(ACacheData: TstgGatherGclCacheData);
- var
- i: Integer;
- begin
- for i := 0 to ACacheData.GatherGclCount - 1 do
- LoadGatherGcl(ACacheData.GatherGcl[i]);
- end;
- procedure TstgGclGatherData.LoadGatherGcl(AGcl: TstgGatherGcl);
- var
- Rec: TsdDataRecord;
- begin
- Rec := sddGatherGcl.Add;
- Rec.ValueByName('ID').AsInteger := AGcl.ID;
- Rec.ValueByName('B_Code').AsString := AGcl.B_Code;
- Rec.ValueByName('IndexCode').AsString := AGcl.IndexCode;
- Rec.ValueByName('Name').AsString := AGcl.Name;
- Rec.ValueByName('Units').AsString := AGcl.Units;
- Rec.ValueByName('Price').AsFloat := AGcl.Price;
- Rec.ValueByName('DealQuantity').AsFloat := AGcl.Gather.DealQuantity;
- Rec.ValueByName('DealTotalPrice').AsFloat := AGcl.Gather.DealTotalPrice;
- Rec.ValueByName('QcQuantity').AsFloat := AGcl.Gather.QcQuantity;
- Rec.ValueByName('QcTotalPrice').AsFloat := AGcl.Gather.QcTotalPrice;
- Rec.ValueByName('QcBGLCode').AsString := AGcl.Gather.QcBGLCode;
- Rec.ValueByName('QcBGLNum').AsString := AGcl.Gather.QcBGLNum;
-
- LoadGatherGclDetail(AGcl);
- end;
- procedure TstgGclGatherData.LoadGatherGclDetail(
- AGcl: TstgGatherGcl);
- var
- iSub, iDetail: Integer;
- vSub: TstgGclSubTenderStageData;
- vDetail: TstgGclSubTenderDetailData;
- Rec: TsdDataRecord;
- sSubTenderName: string;
- begin
- for iSub := 0 to AGcl.SubTenderCount - 1 do
- begin
- vSub := AGcl.SubTender[iSub];
- for iDetail := 0 to vSub.DetailCount - 1 do
- begin
- vDetail := vSub.Detail[iDetail];
- Rec := sddBillsDetail.Add;
- Rec.ValueByName('BillsID').AsInteger := AGcl.ID;
- Rec.ValueByName('TenderID').AsInteger := vSub.SubTenderID;
- Rec.ValueByName('TenderName').AsString := '';
- Rec.ValueByName('SerialNo').AsInteger := vDetail.SerialNo;
- Rec.ValueByName('DealQuantity').AsFloat := vDetail.DetailStage.DealQuantity;
- Rec.ValueByName('DealTotalPrice').AsFloat := vDetail.DetailStage.DealTotalPrice;
- Rec.ValueByName('QcQuantity').AsFloat := vDetail.DetailStage.QcQuantity;
- Rec.ValueByName('QcTotalPrice').AsFloat := vDetail.DetailStage.QcTotalPrice;
- Rec.ValueByName('QcBGLCode').AsString := vDetail.DetailStage.QcBGLCode;
- Rec.ValueByName('QcBGLNum').AsString := vDetail.DetailStage.QcBGLNum;
- end;
- end;
- end;
- procedure TstgGclGatherData.LoadSubTenders(ACacheData: TstgGatherGclCacheData);
- var
- i: Integer;
- vSubTender: TstgGatherGclSubTender;
- Rec: TsdDataRecord;
- begin
- for i := 0 to ACacheData.SubTenderCount - 1 do
- begin
- vSubTender := ACacheData.SubTender[i];
- Rec := sddSubTenders.Add;
- Rec.ValueByName('ID').AsInteger := vSubTender.ID;
- Rec.ValueByName('Name').AsString := vSubTender.Rec.ValueByName('Name').AsString;
- end;
- end;
- procedure TstgGclGatherData.sdvBillsDetailGetText(var Text: String;
- ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
- DisplayText: Boolean);
- function GetTenderName(ATenderID: Integer): string;
- begin
- Result := VarToStrDef(sddSubTenders.Lookup('ID', ATenderID, 'Name'), '');
- end;
- begin
- if DisplayText and (AColumn.FieldName = 'TenderName') then
- Text := GetTenderName(ARecord.ValueByName('TenderID').asInteger);
- end;
- procedure TstgGclGatherData.sdvBillsDetailFilterRecord(ARecord: TsdDataRecord;
- var Allow: Boolean);
- begin
- if Assigned(sdvGatherGcl.Current) then
- Allow := ARecord.ValueByName('BillsID').AsInteger = sdvGatherGcl.Current.ValueByName('ID').AsInteger
- else
- Allow := False;
- end;
- procedure TstgGclGatherData.sdvGatherGclCurrentChanged(
- ARecord: TsdDataRecord);
- begin
- sdvBillsDetail.RefreshFilter;
- end;
- procedure TstgGclGatherData.sdvGatherGclGetText(var Text: String;
- ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
- DisplayText: Boolean);
- begin
- if (AValue.DataType = ftFloat) and (AValue.AsFloat = 0) then
- begin
- Text := '';
- end;
- end;
- procedure TstgGclGatherData.sdvErrorDetailFilterRecord(ARecord: TsdDataRecord;
- var Allow: Boolean);
- begin
- if Assigned(sdvSubTenders.Current) then
- Allow := ARecord.ValueByName('TenderID').AsInteger = sdvSubTenders.Current.ValueByName('ID').AsInteger
- else
- Allow := False;
- end;
- procedure TstgGclGatherData.sdvSubTendersCurrentChanged(
- ARecord: TsdDataRecord);
- begin
- sdvErrorDetail.RefreshFilter;
- end;
- procedure TstgGclGatherData.sdvErrorDetailGetText(var Text: String;
- ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
- DisplayText: Boolean);
- function GetTenderName(ATenderID: Integer): string;
- begin
- Result := VarToStrDef(sddSubTenders.Lookup('ID', ATenderID, 'Name'), '');
- end;
- begin
- if DisplayText then
- begin
- if (AColumn.FieldName = 'TenderName') then
- Text := GetTenderName(ARecord.ValueByName('TenderID').asInteger)
- else if (AColumn.FieldName = 'ErrorType') then
- Text := GetErrorTypeText(AValue.AsInteger);
- end;
- end;
- end.
|