pchsettlefrm.pas
来自「医药连锁经营管理系统源码」· PAS 代码 · 共 758 行 · 第 1/2 页
PAS
758 行
unit PchSettleFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ceBaseBillFrm, ActnList, ModuleAction, ImgList, TB2Dock,
ExtCtrls, RzPanel, TB2Item, TB2Toolbar, DB, DBClient, MConnect, RzDBBnEd,
ComCtrls, RzDTP, RzDBDTP, StdCtrls, Mask, RzEdit, RzDBEdit, RzLabel,
Grids, DBGridEh, DbUtilsEh, EhLibCDS, xEhLibCtl, RzCmboBx, RzDBCmbo,IMainFrm, Menus, Buttons,
RzButton, ckDBClient,uGlobal,DbFuncs,ShowProGress,uDataTypes, ceGlobal,
SelectProvFrm,SelectEmpFrm,SelectDepartFrm,SelectProvLinkManFrm,RzDBLbl,
SelectPchReceiveFrm;
type
TFmPchSettle = class(TceBaseBillForm)
DsPchSettleDtl: TDataSource;
CdsPchSettleDtl: TckClientDataSet;
DsPchSettle: TDataSource;
CdsPchSettle: TckClientDataSet;
RzLabel1: TRzLabel;
RzDBEdit1: TRzDBEdit;
RzLabel2: TRzLabel;
RzDBDateTimePicker1: TRzDBDateTimePicker;
RzLabel3: TRzLabel;
RzLabel4: TRzLabel;
RzLabel5: TRzLabel;
RzLabel8: TRzLabel;
RzLabel18: TRzLabel;
RzDBDateTimePicker3: TRzDBDateTimePicker;
RzLabel19: TRzLabel;
Lab_State: TLabel;
Comcnn: TDCOMConnection;
Label7: TLabel;
edProvName: TRzDBButtonEdit;
RzDBEdit9: TRzDBEdit;
RzDBEdit8: TRzDBEdit;
dbgPchOrderDtl: TxDBGridEh;
cbPayModes: TRzComboBox;
DBEdit6: TRzDBEdit;
RzDBButtonEdit1: TRzDBButtonEdit;
RzLabel15: TRzLabel;
RzLabel21: TRzLabel;
RzLabel13: TRzLabel;
RzLabel14: TRzLabel;
RzDBNumericEdit2: TRzDBEdit;
RzDBNumericEdit3: TRzDBEdit;
RzLabel7: TRzLabel;
RzDBLabel1: TRzDBLabel;
RzLabel16: TRzLabel;
RzDBLabel2: TRzDBLabel;
RzDBButtonEdit2: TRzDBButtonEdit;
ActFinish: TModlAction;
TBItem18: TTBItem;
RzLabel17: TRzLabel;
RzLabel20: TRzLabel;
RzDBDateTimePicker6: TRzDBDateTimePicker;
RzLabel23: TRzLabel;
RzLabel24: TRzLabel;
RzDBEdit2: TRzDBEdit;
RzDBComboBox1: TRzDBComboBox;
RzDBEdit11: TRzDBEdit;
RzDBEdit5: TRzDBEdit;
RzDBEdit12: TRzDBEdit;
RzLabel25: TRzLabel;
RzLabel26: TRzLabel;
RzLabel27: TRzLabel;
RzDBEdit13: TRzDBEdit;
RzLabel6: TRzLabel;
RzLabel22: TRzLabel;
RzDBEdit10: TRzDBEdit;
edDepartName: TRzDBButtonEdit;
CdsPchSettleBillNo: TStringField;
CdsPchSettleFDate: TDateTimeField;
CdsPchSettleInOutKind: TSmallintField;
CdsPchSettleDepartID: TIntegerField;
CdsPchSettleDepartNo: TStringField;
CdsPchSettleDepartName: TStringField;
CdsPchSettleProvNo: TStringField;
CdsPchSettleProvName: TStringField;
CdsPchSettleLinkMan: TStringField;
CdsPchSettleCompanyName: TStringField;
CdsPchSettleTelephone: TStringField;
CdsPchSettleAddress: TStringField;
CdsPchSettleAccountBank: TStringField;
CdsPchSettleAccountNo: TStringField;
CdsPchSettleTaxNo: TStringField;
CdsPchSettleOrderNo: TStringField;
CdsPchSettleInvoiceType: TSmallintField;
CdsPchSettleEmpNo: TStringField;
CdsPchSettleEmpName: TStringField;
CdsPchSettleAudit: TStringField;
CdsPchSettleGoodsQty: TBCDField;
CdsPchSettleGoodsSum: TBCDField;
CdsPchSettleTaxSum: TBCDField;
CdsPchSettleAmount: TBCDField;
CdsPchSettlePayModeNo: TStringField;
CdsPchSettlePayModeName: TStringField;
CdsPchSettleTimeLimit: TIntegerField;
CdsPchSettlePayDate: TDateTimeField;
CdsPchSettleGatherAtOnce: TBCDField;
CdsPchSettleTransfer: TBooleanField;
CdsPchSettleRemark: TStringField;
CdsPchSettleFlag: TStringField;
CdsPchSettleCreater: TStringField;
CdsPchSettleCreatTime: TDateTimeField;
CdsPchSettleMender: TStringField;
CdsPchSettleGrup: TIntegerField;
CdsPchSettleAdsPchSettleDtl: TDataSetField;
CdsPchSettleDtlBillNo: TStringField;
CdsPchSettleDtlItemNo: TIntegerField;
CdsPchSettleDtlGoodsID: TStringField;
CdsPchSettleDtlName: TStringField;
CdsPchSettleDtlSpecs: TStringField;
CdsPchSettleDtlUnit: TStringField;
CdsPchSettleDtlBatchNo: TStringField;
CdsPchSettleDtlQty: TBCDField;
CdsPchSettleDtlPrice: TFloatField;
CdsPchSettleDtlTaxRate: TBCDField;
CdsPchSettleDtlUnTaxPrice: TFloatField;
CdsPchSettleDtlGoodsSum: TBCDField;
CdsPchSettleDtlTaxSum: TBCDField;
CdsPchSettleDtlAmount: TBCDField;
CdsPchSettleDtlCostPrice: TFloatField;
CdsPchSettleDtlCostAmount: TBCDField;
CdsPchSettleDtlPBillNo: TStringField;
CdsPchSettleDtlPItemNo: TIntegerField;
CdsPchSettleDtlPaidUp: TBCDField;
CdsPchSettleDtlPayDone: TBooleanField;
CdsPchSettleDtlPayDoneDate: TDateTimeField;
CdsPchSettleDtlRemark: TStringField;
cbInOutKind: TRzComboBox;
RzDBComboBox3: TRzDBComboBox;
RzDBEdit14: TRzDBEdit;
RzDBEdit15: TRzDBEdit;
CdsPchSettleInvoiceDate: TDateTimeField;
CdsPchSettleInvoiceNo: TStringField;
RzLabel10: TRzLabel;
cbInvoiceType: TRzComboBox;
RzLabel11: TRzLabel;
RzDBEdit6: TRzDBEdit;
procedure ActAddSubItemExecute(Sender: TObject);
procedure ActDelSubItemExecute(Sender: TObject);
procedure CdsPchSettleAfterScroll(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure CdsPchSettleDtlQtyChange(Sender: TField);
procedure CdsPchSettleDtlNewRecord(DataSet: TDataSet);
procedure CdsPchSettleDtlBeforeInsert(DataSet: TDataSet);
procedure CdsPchSettleDtlAfterPost(DataSet: TDataSet);
procedure RzDBButtonEdit1ButtonClick(Sender: TObject);
procedure edDepartNameButtonClick(Sender: TObject);
procedure CdsPchSettleNewRecord(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure CdsPchSettleDtlGoodsIDChange(Sender: TField);
procedure CdsPchSettleProvNOChange(Sender: TField);
procedure ActSaveExecute(Sender: TObject);
procedure CdsPchSettleReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
procedure dbgPchOrderDtlEditButtonClick(Sender: TObject);
procedure CdsPchSettleEmpNOChange(Sender: TField);
procedure ActAuditExecute(Sender: TObject);
procedure ActRevertExecute(Sender: TObject);
procedure ActFieldLayoutExecute(Sender: TObject);
procedure ActDataExportExecute(Sender: TObject);
procedure edProvNameButtonClick(Sender: TObject);
procedure RzDBButtonEdit2ButtonClick(Sender: TObject);
procedure CdsPchSettleDtlTaxRateChange(Sender: TField);
procedure CdsPchSettleDtlPriceChange(Sender: TField);
procedure CdsPchSettleDtlUnTaxpriceChange(Sender: TField);
procedure ActQueryExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ActUpdateExecute(Sender: TObject);
private
CdsFieldProperty :TckClientDataSet;
iClientID :Integer;
ItemId :Integer;
bBrowGoods,CanAudit,CanRevert:Boolean;
slPayModes:TStrings;
LocSetting: PLocSetting;
SvrPchSettle,SvrCommon:TDispatchConnection;
BeforeEmpNo,BeforeGoodsID,BeforeProvNo :String;
Procedure SumCount;
Procedure ShowPayModes; //显示结算方式
procedure ParseGoodsInfo;
protected
Function DoSome(cType: PChar; Values: Variant): Variant; override;
public
end;
Const
sPayModes='Select PayModeNo,PayModename,TimeLimit From PayModes order By PayModeNO';
sFieldProPerty='Select * From SysFieldProperty '+
' Where TableName in (''PchSettle'', ''PchSettleDtl'', ''Goodses'')';
var
FmPchSettle :TFmPchSettle;
implementation
uses SelectGoodsFrm,FieldsLayoutFrm,DataExportFrm, ViewGoodsPriceFrm;
{$R *.dfm}
procedure TFmPchSettle.ActAddSubItemExecute(Sender: TObject);
Var sProvNo : String;
begin
If FEditMode=0 Then Exit;
If Not(CdsPchSettle.State In dsEditModes) Then Exit;
CdsPchSettleDtl.Append;
sProvNo := CdsPchSettleProvNo.Value;
SelectPchReceive(CdsPchSettleDtl,sProvNo,True,True);
End;
procedure TFmPchSettle.ActDelSubItemExecute(Sender: TObject);
begin
If FEditMode=0 Then Exit;
if CdsPchSettleDtl.IsEmpty then Exit;
CdsPchSettleDtl.Delete;
end;
procedure TFmPchSettle.CdsPchSettleAfterScroll(DataSet: TDataSet);
Var sModeNo:String;
iIndex:Integer;
begin
sModeNo:=CdsPchSettlePayModeNo.Value;
iIndex:=slPayModes.IndexOf(sModeNO);
cbPayModes.ItemIndex:=iIndex;
If CdsPchSettleTransfer.Value Then Begin
ActAudit.Enabled:=False And CanAudit;
ActRevert.Enabled:=True And CanRevert;
Lab_State.Caption:='单据状态:已审核';
Lab_State.Font.Color:=clRed;
End Else Begin
ActAudit.Enabled:=True;
ActRevert.Enabled:=False;
Lab_State.Caption:='单据状态:未审核';
Lab_State.Font.Color:=clHotLight;
End;
end;
procedure TFmPchSettle.FormCreate(Sender: TObject);
begin
inherited;
slPayModes:=TStringList.Create;
CdsFieldProperty:=TCkClientDataSet.Create(Self);
LocSetting := IFmMain.IFmMainEx.GetLocSetting;
SetGressHint('正在登录到采购结算服务器...');
SvrPchSettle:=iFmMain.GetConnection(Handle,'','CKPurchInBase.PurchInRDM');
SetGressHint('正在连接到公用信息服务器...');
SvrCommon:=iFmMain.GetConnection(Handle,'','CommonSvr.CommonRDM');
SetGressHint('读取用户操作权限...');
IFmMain.SetActionStatus(ActionList1, hInstance, self.ClassName);
CanAudit := ActAudit.Enabled;
CanRevert:= ActCancel.Enabled;
iClientID:=LogonInfo^.ClientID;
sBillNoList.Text := SvrPchSettle.AppServer.GetCurrMonthBills(iClientID, 'PchSettle');
CdsPchSettle.RemoteServer:=SvrPchSettle;
CdsFieldProPerty.ProviderName:='DspTemp';
CdsFieldProPerty.RemoteServer:=SvrCommon;
MasterDataSet := CdsPchSettle;
SetLength(FDetailDataSets, 1);
FDetailDataSets[0] := CdsPchSettleDtl;
BillType := 'PchSettle';
RepDataSetNames := '采购结算;结算明细';
end;
procedure TFmPchSettle.FormShow(Sender: TObject);
begin
SetGressHint('初始化本地环境...');
SetGridEhColor([dbgPchOrderDtl]);
LoadFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [dbgPchOrderDtl]);
SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFmPchSettle.Xml');
SetFieldProperty(CdsFieldProPerty,CdsPchSettle, 'PchSettle');
SetFieldProperty(CdsFieldProPerty,CdsPchSettleDtl, 'PchSettleDtl,Goodses');
SetGressHint('读取历史单据...');
ShowPayModes;
SetCurrBillIdx(0);
inherited;
FreeGressForm;
end;
procedure TFmPchSettle.CdsPchSettleDtlQtyChange(Sender: TField);
var str: String;
begin
//实际单价 = 单价 * 折扣
str := LowerCase(dbgPchOrderDtl.SelectedField.FieldName);
if (str='goodsid')or(str='price')or(str='rebate') then
CdsPchSettleDtlUnTaxPrice.AsFloat := CdsPchSettleDtlPrice.AsFloat / (1 + self.CdsPchSettleDtlTaxRate.AsFloat/ 100);
//货款 = 数量 * 未税单价 合计 = 数量 * 单价 税款 = 合计 - 货款
CdsPchSettleDtlGoodsSum.AsFloat := CdsPchSettleDtlQty.AsFloat * CdsPchSettleDtlUnTaxPrice.AsFloat;
CdsPchSettleDtlAmount.AsFloat := CdsPchSettleDtlQty.AsFloat * CdsPchSettleDtlPrice.AsFloat;
CdsPchSettleDtlTaxSum.AsFloat := CdsPchSettleDtlAmount.AsFloat - CdsPchSettleDtlGoodsSum.AsFloat;
end;
procedure TFmPchSettle.CdsPchSettleDtlTaxRateChange(Sender: TField);
begin
if dbgPchOrderDtl.SelectedField.FieldName = Sender.FieldName then
begin
CdsPchSettleDtlUnTaxPrice.AsFloat := CdsPchSettleDtlPrice.AsFloat / ( 1 + CdsPchSettleDtlTaxRate.AsFloat / 100 );
CdsPchSettleDtlGoodsSum.AsFloat := CdsPchSettleDtlQty.AsFloat*CdsPchSettleDtlUnTaxPrice.AsFloat;
CdsPchSettleDtlTaxSum.AsFloat := CdsPchSettleDtlAmount.AsFloat-CdsPchSettleDtlGoodsSum.AsFloat;
end;
end;
procedure TFmPchSettle.CdsPchSettleDtlUnTaxpriceChange(Sender: TField);
begin
if dbgPchOrderDtl.SelectedField.FieldName = Sender.FieldName then
begin
CdsPchSettleDtlPrice.AsFloat := Sender.AsFloat * ( 1 + CdsPchSettleDtlTaxRate.AsFloat / 100 );
CdsPchSettleDtlGoodsSum.AsFloat:= CdsPchSettleDtlQty.AsFloat * CdsPchSettleDtlUnTaxPrice.AsFloat;
CdsPchSettleDtlAmount.AsFloat := CdsPchSettleDtlQty.AsFloat*CdsPchSettleDtlPrice.AsFloat;
CdsPchSettleDtlTaxSum.AsFloat := CdsPchSettleDtlAmount.AsFloat - CdsPchSettleDtlGoodsSum.AsFloat;
end;
end;
procedure TFmPchSettle.CdsPchSettleDtlPriceChange(Sender: TField);
begin
if dbgPchOrderDtl.SelectedField.FieldName = Sender.FieldName then
begin
CdsPchSettleDtlUnTaxPrice.AsFloat := CdsPchSettleDtlPrice.AsFloat / ( 1 + CdsPchSettleDtlTaxRate.AsFloat / 100 );
CdsPchSettleDtlGoodsSum.AsFloat := CdsPchSettleDtlQty.AsFloat*CdsPchSettleDtlUnTaxPrice.AsFloat;
CdsPchSettleDtlAmount.AsFloat := CdsPchSettleDtlQty.AsFloat*CdsPchSettleDtlPrice.AsFloat;
CdsPchSettleDtlTaxSum.AsFloat := CdsPchSettleDtlAmount.AsFloat-CdsPchSettleDtlGoodsSum.AsFloat;
end;
end;
procedure TFmPchSettle.CdsPchSettleDtlNewRecord(DataSet: TDataSet);
begin
BeforeGoodsID:='';
CdsPchSettleDtlBillNo.Value:=CdsPchSettleBillNo.Value;
CdsPchSettleDtlItemNo.Value := ItemId+1;
end;
procedure TFmPchSettle.CdsPchSettleDtlBeforeInsert(DataSet: TDataSet);
begin
inherited;
ItemId := GetFieldMaxInt(CdsPchSettleDtl,'ItemNo');
end;
procedure TFmPchSettle.CdsPchSettleDtlAfterPost(DataSet: TDataSet);
var dGoodsSum,dTaxSum,dQty:Double;
mark1: TBookmark;
begin
BeforeGoodsID:='';
dGoodsSum:=0;
dTaxSum:=0;
dQty:=0;
with CdsPchSettleDtl do begin
Mark1 := GetBookmark;
DisableControls;
try
First;
while not Eof do begin
dGoodsSum:=dGoodsSum+FieldByName('GoodsSum').AsFloat;
dTaxSum:=dTaxSum+FieldByName('TaxSum').AsFloat;
dQty:=dQty+FieldByName('Qty').AsFloat;
next;
end;
CdsPchSettle.FieldByName('GoodsQty').AsFloat:=dQty;
CdsPchSettle.FieldByName('GoodsSum').AsFloat:=dGoodsSum;
CdsPchSettle.FieldByName('TaxSum').AsFloat:=dTaxSum;
CdsPchSettle.FieldByName('Amount').AsFloat :=dGoodsSum+dTaxSum;
finally
GotoBookmark(Mark1);
FreeBookmark(Mark1);
EnableControls;
end;
end;
end;
procedure TFmPchSettle.RzDBButtonEdit1ButtonClick(Sender: TObject);
Var sEmpNo,sEmpName:String;
begin
If FEditMode=0 Then Exit;
sEmpNo := CdsPchSettleEmpNO.Value;
If SelectEmp(sEmpNo,sEmpName) Then begin
CdsPchSettleEmpNO.Value := sEmpNo;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?