📄 ca020.pas
字号:
unit CA020;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
MasterDetail, Menus, Db, DBTables, Grids, DBGrids, Buttons, ExtCtrls,
StdCtrls, Mask, DBCtrls;
type
TfmCA020 = class(TfmMasterDetail)
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
Label3: TLabel;
ED2: TDBEdit;
DBEdit4: TDBEdit;
DBEdit8: TDBEdit;
sbPayCode: TSpeedButton;
Label13: TLabel;
DBEdit13: TDBEdit;
Label4: TLabel;
qyTemp2: TQuery;
qyTemp1: TQuery;
edProductID: TDBEdit;
qyMasterOUTCODE: TFloatField;
qyMasterPAYCODE: TFloatField;
qyMasterSALECODE: TStringField;
qyMasterSALENAME: TStringField;
qyMasterCREATEMAN: TStringField;
qyMasterCREATEDATE: TDateTimeField;
qyDetailID: TFloatField;
qyDetailOUTCODE: TFloatField;
qyDetailCARDTYPE: TStringField;
qyDetailCARDPARVALUE: TFloatField;
qyDetailCARDQUANTITY: TFloatField;
qyDetailAMOUNT: TFloatField;
sbOutCode: TSpeedButton;
qyPay: TQuery;
qyPayPAYCODE: TFloatField;
qyMasterPAYMONEY: TFloatField;
qyPayPAYMONEY: TFloatField;
procedure FormCreate(Sender: TObject);
procedure qyMasterBeforeOpen(DataSet: TDataSet);
procedure qyMasterNewRecord(DataSet: TDataSet);
procedure qyMasterBeforePost(DataSet: TDataSet);
procedure qyDetailBeforeOpen(DataSet: TDataSet);
procedure qyDetailNewRecord(DataSet: TDataSet);
procedure qyDetailBeforePost(DataSet: TDataSet);
procedure dsMasterStateChange(Sender: TObject);
procedure gdDetailEditButtonClick(Sender: TObject);
procedure sbPayCodeClick(Sender: TObject);
procedure qyDetailAfterInsert(DataSet: TDataSet);
procedure qyDetailUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure sbSelectClick(Sender: TObject);
procedure qyDetailCARDPARVALUEValidate(Sender: TField);
procedure qyDetailCARDQUANTITYValidate(Sender: TField);
procedure qyDetailAMOUNTValidate(Sender: TField);
procedure sbOutCodeClick(Sender: TObject);
procedure qyPayBeforeOpen(DataSet: TDataSet);
procedure qyDetailAfterPost(DataSet: TDataSet);
procedure qyDetailAfterDelete(DataSet: TDataSet);
procedure ED2Exit(Sender: TObject);
procedure ED1Exit(Sender: TObject);
procedure qyMasterAfterPost(DataSet: TDataSet);
procedure qyDetailCARDTYPEChange(Sender: TField);
private
{ Private declarations }
procedure CalcSalesAmount;
procedure InsertIntoSaleCardStock(fPayCode: Extended);
procedure UpdatePayCite(fPayCode: Extended);
public
{ Public declarations }
AStartPeriodDate, AEndPeriodDate : String;
AStartCustomerID, AEndCustomerID : String;
AStartSalesManID, AEndSalesManID : String;
AStartWarehouseID, AEndWarehouseID : String;
AProperty1, AProperty2, AProperty3, AProperty4 : String;
ReData : Boolean;
procedure OpenDB; override;
procedure CalcAmount; override;
procedure GetPrevValue; override;
procedure CheckCardQuantity;
end;
var
fmCA020: TfmCA020;
implementation
uses Main, DataModule, PublicFunction, CheckData, ChinaCalendar,
GetData,ChinaCalculator,
BaseSearch, Loading;
var
sPrevDeliveryDate, sPrevCustomerID, sPrevWarehouseID, sPrevDeliveryProperty : String;
rPrevPayCode : real;
sSaleCode : string;
MaxItem:string='';
{$R *.DFM}
{ TfmDL110 }
procedure TfmCA020.FormCreate(Sender: TObject);
begin
inherited;
//卡种
gdDetail.Columns[2].PickList.Clear;
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('select CardType from Pwpt_CardType where bused = ''1'' ');
SQL.Add('group by CardType order by CardType');
Open;
end;
while not qyTemp.Eof do
begin
gdDetail.Columns[2].PickList.Add(qyTemp.fieldbyname('CardType').AsString);
qyTemp.Next;
end;
// if gdDetail.Columns[2].PickList.Count > 0 then CB1.ItemIndex := 0;
end;
procedure TfmCA020.OpenDB;
begin
qyMaster.Close;
OrderBySQL := 'M.OutCode';
qyMaster.SQL.Text := SQLText;
qyMaster.Open;
//ItemFieldName := 'ID';
end;
procedure TfmCA020.CalcAmount;
var
fSubTotal : Extended;
PrevBookmark : TBookmark;
begin
fSubTotal := 0;
PrevBookmark := qyDetail.GetBookmark;
try
qyDetail.DisableControls;
qyDetail.First;
while not qyDetail.Eof do
begin
fSubTotal := fSubTotal + qyDetail.FieldByName('Amount').AsFloat;
qyDetail.Next;
end;
DBEdit13.Text := floattostr(fSubTotal);
finally
qyDetail.EnableControls;
if PrevBookmark <> nil then
begin
qyDetail.GotoBookmark(PrevBookmark);
qyDetail.FreeBookmark(PrevBookmark);
end;
end;
end;
procedure TfmCA020.CheckCardQuantity;
var
PrevBookmark : TBookmark;
fNotSaleCardQuantity : real;
begin
PrevBookmark := qyDetail.GetBookmark;
try
qyDetail.DisableControls;
qyDetail.First;
while not qyDetail.Eof do
begin
{ with qyTemp do
begin
Close;
Sql.Clear;
Sql.add('select count(*) as CardQuantity From pwpt_cardstock ');
Sql.add('where CardType = :CardType and cardparvalue = :cardparvalue and bout =''0'' ');
ParamByName('cardtype').AsString := qyDetail.fieldbyname('cardtype').AsString;
ParamByName('cardparvalue').AsFloat := qyDetail.fieldbyname('cardparvalue').AsFloat;
Open;
end;
}
fNotSaleCardQuantity := GetNotSaleCardQuantuty( qyDetail.fieldbyname('cardtype').AsString,qyDetail.fieldbyname('cardparvalue').AsFloat );
if fNotSaleCardQuantity < qyDetail.FieldByName('CardQuantity').AsFloat then
begin
MyWarning('卡库存不足!面值'
+ floattostr( qyDetail.fieldbyname('cardparvalue').AsFloat)
+ '元的' + qyDetail.fieldbyname('cardtype').AsString
+ '只有' + floattostr(fNotSaleCardQuantity)+'张');
abort;
end;
qyDetail.Next;
end;
finally
qyDetail.EnableControls;
if PrevBookmark <> nil then
begin
qyDetail.GotoBookmark(PrevBookmark);
qyDetail.FreeBookmark(PrevBookmark);
end;
end;
end;
procedure TfmCA020.qyMasterBeforeOpen(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
// ParamByName('Property3').AsString := AProperty3;
end;
end;
procedure TfmCA020.qyMasterNewRecord(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
FieldByName('OutCode').AsFloat := GetMaxOutCode();
FieldByName('PayCode').AsFloat := 0;
FieldByName('SaleCode').AsString := Space(8);
FieldByName('PayMoney').AsFloat := 0;
end;
end;
procedure TfmCA020.qyMasterBeforePost(DataSet: TDataSet);
begin
inherited;
if not CheckSaleCode(qyMaster.FieldByName('SaleCode').AsString) then
begin
ED1.SetFocus;
Abort;
end;
if qyMaster.FieldByName('PayCode').isnull then
begin
NullWarning('缴费编号');
ED2.SetFocus;
Abort;
end;
if not CheckPayCode(qyMaster.FieldByName('PayCode').Asfloat,
qyMaster.FieldByName('SaleCode').AsString) then
begin
ED2.SetFocus;
Abort;
end;
CalcAmount;
if floattostr(qyMaster.FieldByName('PayMoney').AsFloat) <> DBEdit13.Text then
begin
MyWarning('缴费金额与卡总金额不符!');
Abort;
end;
CheckCardQuantity;
qyMaster.FieldByName('CreateMan').AsString := sAdmCode;
qyMaster.FieldByName('CreateDate').AsDateTime := GetSysDate();
if qyMaster.State = dsInsert then
begin
qyMaster.FieldByName('OutCode').AsFloat := GetMaxOutCode();
end;
WriteOperatorLog('[卡出库][Pwpt_CardOutMaster]['+qyMaster.fieldbyname('OutCode').asstring+']');
end;
procedure TfmCA020.qyDetailBeforeOpen(DataSet: TDataSet);
begin
inherited;
qyDetail.ParamByName('OutCode').AsString := qyMaster.FieldByName('OutCode').AsString;
end;
procedure TfmCA020.qyDetailNewRecord(DataSet: TDataSet);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -