| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | 
							- unit DealBillsDm;
 
- interface
 
- uses
 
-   SysUtils, Classes, sdDB, sdProvider, ADODB;
 
- type
 
-   TDealBillsData = class(TDataModule)
 
-     sdpDealBills: TsdADOProvider;
 
-     sddDealBills: TsdDataSet;
 
-     sdvDealBills: TsdDataView;
 
-     procedure sddDealBillsBeforeAddRecord(ARecord: TsdDataRecord;
 
-       var Allow: Boolean);
 
-     procedure sdvDealBillsSetText(var Text: String; ARecord: TsdDataRecord;
 
-       AValue: TsdValue; AColumn: TsdViewColumn; var Allow: Boolean);
 
-   private
 
-     FProjectData: TObject;
 
-     function GetNewID: Integer;
 
-   public
 
-     constructor Create(AProjectData: TObject);
 
-     destructor Destroy; override;
 
-     procedure Open(AConnection: TADOConnection);
 
-     procedure Close;
 
-     procedure Save;
 
-     procedure Clear;
 
-     procedure DisableEvent;
 
-     procedure EnableEvent;
 
-     function DealRecord(const AB_Code: string): TsdDataRecord;
 
-     function GetAllDealBillsJson: string;
 
-     property ProjectData: TObject read FProjectData;
 
-   end;
 
- implementation
 
- uses
 
-   UtilMethods, superobject;
 
- {$R *.dfm}
 
- { TDealBillsData }
 
- procedure TDealBillsData.Clear;
 
- begin
 
-   sddDealBills.DeleteAll;
 
- end;
 
- procedure TDealBillsData.Close;
 
- begin
 
-   sddDealBills.Close;
 
- end;
 
- constructor TDealBillsData.Create(AProjectData: TObject);
 
- begin
 
-   inherited Create(nil);
 
-   FProjectData := AProjectData;
 
- end;
 
- function TDealBillsData.DealRecord(const AB_Code: string): TsdDataRecord;
 
- begin
 
-   Result := sddDealBills.Locate('B_Code', AB_Code);
 
- end;
 
- destructor TDealBillsData.Destroy;
 
- begin
 
-   inherited;
 
- end;
 
- procedure TDealBillsData.DisableEvent;
 
- begin
 
-   sddDealBills.BeforeAddRecord := nil;
 
- end;
 
- procedure TDealBillsData.EnableEvent;
 
- begin
 
-   sddDealBills.BeforeAddRecord := sddDealBillsBeforeAddRecord;
 
- end;
 
- function TDealBillsData.GetAllDealBillsJson: string;
 
- var
 
-   vJa, vJbills: ISuperObject;
 
-   i: Integer;
 
-   Rec: TsdDataRecord;
 
- begin
 
-   vJa := SA([]);
 
-   try
 
-     for i := 0 to sddDealBills.RecordCount - 1 do
 
-     begin
 
-       Rec := sddDealBills.Records[i];
 
-       vJbills := SO;
 
-       vJbills.S['lnum'] := Rec.ValueByName('B_Code').AsString;
 
-       vJbills.S['lname'] := Rec.ValueByName('Name').AsString;
 
-       vJbills.S['unit'] := Rec.ValueByName('Units').AsString;
 
-       vJbills.D['unitprice'] := Rec.ValueByName('Price').AsFloat;
 
-       vJbills.D['amount'] := Rec.ValueByName('Quantity').AsFloat;
 
-       vJa.AsArray.Add(vJbills);
 
-     end;
 
-   finally
 
-     Result := vJa.AsJSon;
 
-   end;
 
- end;
 
- function TDealBillsData.GetNewID: Integer;
 
- var
 
-   idx: TsdIndex;
 
- begin
 
-   Result := 1;
 
-   if sddDealBills.RecordCount = 0 then Exit;
 
-   idx := sddDealBills.FindIndex('idxID');
 
-   Result := idx.Records[sddDealBills.RecordCount - 1].ValueByName('ID').AsInteger + 1;
 
- end;
 
- procedure TDealBillsData.Open(AConnection: TADOConnection);
 
- begin
 
-   sdpDealBills.Connection := AConnection;
 
-   sddDealBills.Open;
 
-   if not Assigned(sddDealBills.IndexList.FindByName('idxID')) then
 
-     sddDealBills.AddIndex('idxID', 'ID');
 
-   sdvDealBills.Open;
 
-   sdvDealBills.IndexName := 'idxID';
 
- end;
 
- procedure TDealBillsData.Save;
 
-   procedure CheckIndexCode;
 
-   var
 
-     i: Integer;
 
-     Rec: TsdDataRecord;
 
-     sIndexCode: string;
 
-   begin
 
-     for i := 0 to sddDealBills.RecordCount - 1 do
 
-     begin
 
-       Rec := sddDealBills.Records[i];
 
-       sIndexCode := B_CodeToIndexCode(Rec.ValueByName('B_Code').AsString);
 
-       if sIndexCode <> Rec.ValueByName('IndexCode').AsString then
 
-         Rec.ValueByName('IndexCode').AsString := sIndexCode;
 
-     end;
 
-   end;
 
- begin
 
-   CheckIndexCode;
 
-   sddDealBills.Save;
 
- end;
 
- procedure TDealBillsData.sddDealBillsBeforeAddRecord(
 
-   ARecord: TsdDataRecord; var Allow: Boolean);
 
- begin
 
-   ARecord.ValueByName('ID').AsInteger := GetNewID;
 
- end;
 
- procedure TDealBillsData.sdvDealBillsSetText(var Text: String;
 
-   ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
 
-   var Allow: Boolean);
 
- begin
 
-   if SameText(AColumn.FieldName, 'Price') then
 
-     Text := FloatToStr(PriceRoundTo(StrToFloatDef(Text, 0)))
 
-   else if SameText(AColumn.FieldName, 'Quantity') then
 
-     Text := FloatToStr(QuantityRoundTo(StrToFloatDef(Text, 0)))
 
-   else if SameText(AColumn.FieldName, 'TotalPrice') then
 
-     Text := FloatToStr(TotalPriceRoundTo(StrToFloatDef(Text, 0)));
 
- end;
 
- end.
 
 
  |