📄 selexportfrm.pas
字号:
unit SelExportFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ceBaseBillFrm, ActnList, ModuleAction, ImgList, TB2Dock,
ExtCtrls, RzPanel, TB2Item, TB2Toolbar, StdCtrls, DBCtrls, Mask, DB,
DBClient, MConnect, Grids, DBGridEh, DbUtilsEh, EhLibCDS, xEhLibCtl, RzEdit, RzDBEdit,
ComCtrls, RzDTP, RzDBDTP, RzTabs,iMainFrm, RzButton, RzRadChk, RzDBChk,
RzCmboBx, RzDBCmbo, RzDBBnEd, Menus, Buttons,DbFuncs, ckDBClient,
TransComp,uGlobal,ShowProGress,uDataTypes,SelectCustFrm,SelectEmpFrm,
ceGlobal,SelectDepotFrm, RzDBLbl, RzLabel,SelectCustLinkManFrm;
type
TFmSelExport = class(TceBaseBillForm)
DComConn: TDCOMConnection;
CdsSelExport: TckClientDataSet;
DsSelExport: TDataSource;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label14: TLabel;
Label15: TLabel;
edBillNo: TRzDBEdit;
DBEdit4: TRzDBEdit;
DBEdit5: TRzDBEdit;
DBEdit6: TRzDBEdit;
DBEdit7: TRzDBEdit;
DBEdit8: TRzDBEdit;
DBEdit2: TRzDBDateTimePicker;
DBEdit15: TRzDBDateTimePicker;
Lab_State: TLabel;
PgC1: TRzPageControl;
TabSelExportDtl: TRzTabSheet;
TabSelExpense: TRzTabSheet;
dbgSelExportDtl: TxDBGridEh;
Label12: TLabel;
Label16: TLabel;
Label19: TLabel;
Label20: TLabel;
RzDBEdit4: TRzDBEdit;
RzDBEdit5: TRzDBEdit;
RzDBEdit6: TRzDBEdit;
RzDBEdit7: TRzDBEdit;
Label21: TLabel;
DBEdit16: TRzDBEdit;
dbgSelExpense: TxDBGridEh;
CdsSelExportDtl: TckClientDataSet;
DsSelExportDtl: TDataSource;
CdsSelExpense: TckClientDataSet;
DsSelExpense: TDataSource;
DBCheckBox1: TRzDBCheckBox;
edProvName: TRzDBButtonEdit;
cbPayModes: TRzComboBox;
RzDBButtonEdit1: TRzDBButtonEdit;
CdsSelExpenseBillNo: TStringField;
CdsSelExpenseExpenseType: TStringField;
CdsSelExpenseAmount: TBCDField;
CdsSelExpenseRemark: TStringField;
CdsSelExportBillNo: TStringField;
CdsSelExportFDate: TDateTimeField;
CdsSelExportInOutKind: TSmallintField;
CdsSelExportOrderNo: TStringField;
CdsSelExportContractNo: TStringField;
CdsSelExportEmpNo: TStringField;
CdsSelExportEmpName: TStringField;
CdsSelExportAudit: TStringField;
CdsSelExportCustNo: TStringField;
CdsSelExportCustName: TStringField;
CdsSelExportLinkMan: TStringField;
CdsSelExportGoodsQty: TBCDField;
CdsSelExportGoodsSum: TBCDField;
CdsSelExportTaxSum: TBCDField;
CdsSelExportAmount: TBCDField;
CdsSelExportPayModeNo: TStringField;
CdsSelExportPayDate: TDateTimeField;
CdsSelExportRemark: TStringField;
CdsSelExportFungible: TBooleanField;
CdsSelExportTransfer: TBooleanField;
CdsSelExportFinish: TBooleanField;
CdsSelExportGrup: TIntegerField;
CdsSelExportAdsSelExpense: TDataSetField;
CdsSelExportDtlBillNo: TStringField;
CdsSelExportDtlItemNo: TIntegerField;
CdsSelExportDtlGoodsID: TStringField;
CdsSelExportDtlName: TStringField;
CdsSelExportDtlSpecs: TStringField;
CdsSelExportDtlUnit: TStringField;
CdsSelExportDtlQty: TBCDField;
CdsSelExportDtlOPrice: TFloatField;
CdsSelExportDtlRebate: TBCDField;
CdsSelExportDtlPrice: TFloatField;
CdsSelExportDtlTaxRate: TBCDField;
CdsSelExportDtlUnTaxPrice: TFloatField;
CdsSelExportDtlGoodsSum: TBCDField;
CdsSelExportDtlTaxSum: TBCDField;
CdsSelExportDtlAmount: TBCDField;
CdsSelExportDtlBatchNo: TStringField;
CdsSelExportDtlProdDate: TDateTimeField;
CdsSelExportDtlValidDate: TDateTimeField;
CdsSelExportDtlDepotID: TIntegerField;
CdsSelExportDtlDepotNO: TStringField;
CdsSelExportDtlDepotName: TStringField;
CdsSelExportDtlPBillNo: TStringField;
CdsSelExportDtlPItemNo: TIntegerField;
CdsSelExportDtlPaidUp: TBCDField;
CdsSelExportCreater: TStringField;
CdsSelExportCreatTime: TDateTimeField;
CdsSelExportMender: TStringField;
CdsSelExportUpdateTime: TDateTimeField;
CdsSelExportDtlCustGoodsID: TStringField;
RzLabel7: TRzLabel;
RzDBLabel1: TRzDBLabel;
RzLabel16: TRzLabel;
RzDBLabel2: TRzDBLabel;
RzDBButtonEdit2: TRzDBButtonEdit;
CdsSelExportDtlBerthNo: TStringField;
CdsSelExportAdsSelExportDtl: TDataSetField;
CdsSelExportDtlWholeDepot: TIntegerField;
CdsSelExportDtlWholeDepotNo: TStringField;
CdsSelExportDtlWholeDepotName: TStringField;
CdsSelExportDtlMidPackQty: TBCDField;
CdsSelExportDtlBigPackQty: TBCDField;
CdsSelExportDtlProvNo: TStringField;
procedure ActSaveExecute(Sender: TObject);
procedure ActUpdateExecute(Sender: TObject);
procedure ActDeleteExecute(Sender: TObject);
procedure ActAddSubItemExecute(Sender: TObject);
procedure ActDelSubItemExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CdsSelExportReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
procedure CdsSelExportNewRecord(DataSet: TDataSet);
procedure CdsSelExportDtlNewRecord(DataSet: TDataSet);
procedure CdsSelExpenseNewRecord(DataSet: TDataSet);
procedure CdsSelExportDtlBeforeInsert(DataSet: TDataSet);
procedure CdsSelExportDtlAfterPost(DataSet: TDataSet);
procedure CdsSelExportAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure edProvNameButtonClick(Sender: TObject);
procedure RzDBButtonEdit1ButtonClick(Sender: TObject);
procedure CdsSelExportDtlOPriceChange(Sender: TField);
procedure CdsSelExportDtlQtyChange(Sender: TField);
procedure CdsSelExportDtlTaxRateChange(Sender: TField);
procedure CdsSelExportEmpNoChange(Sender: TField);
procedure CdsSelExportCustNoChange(Sender: TField);
procedure CdsSelExportDtlGoodsIDChange(Sender: TField);
procedure dbgSelExportDtlEditButtonClick(Sender: TObject);
procedure CdsSelExportDtlDepotNOChange(Sender: TField);
procedure ActAuditExecute(Sender: TObject);
procedure ActRevertExecute(Sender: TObject);
procedure ActFieldLayoutExecute(Sender: TObject);
procedure ActDataExportExecute(Sender: TObject);
procedure RzDBButtonEdit2ButtonClick(Sender: TObject);
procedure dbgSelExportDtlKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ActQueryExecute(Sender: TObject);
procedure cbPayModesChange(Sender: TObject);
private
SvrSelExport,SvrCommon:TDispatchConnection;
iLastItemNo,iClientID:Integer;
sCurrEnterFld: String;//当按下Enter键时所在的列,如果该列需要特殊处理时才记录,否则该值为空
slPayModes:TStrings;
bBrowGoods, CanAudit, CanRevert:Boolean;
CdsFieldProPerty:TCkClientDataSet;
LocSetting: PLocSetting;
BeforeDepotNo,BeforeGoodsID,BeforeEmpNo,BeforeCustNo:String;
Procedure ShowPayModes; //显示结算方式
Procedure SumCount;
procedure ParseGoodsInfo;
public
Function DoSome(cType: PChar; Values: Variant): Variant; override;
protected
end;
Const
sPayModes='Select PayModeNo,PayModename,TimeLimit From PayModes order By PayModeNO';
sFieldProPerty='Select * From SysFieldProPerty '+
' Where TableName In(''SelExport'', ''SelExportDtl'', ''Goodses'',''SelExpense'')';
var
FmSelExport: TFmSelExport;
implementation
Uses SelectGoodsFrm,FieldsLayoutFrm,DataExportFrm,ViewGoodsPriceFrm,
SelectBatchNoFrm;
{$R *.dfm}
procedure TFmSelExport.FormCreate(Sender: TObject);
begin
inherited;
CdsFieldProPerty:=TCKClientDataSet.Create(Self);
slPayModes:=TStringList.Create;
LocSetting := IFmMain.IFmMainEx.GetLocSetting;
SetGressHint('正在连接销售开单服务器...');
SetLength(FDetailDataSets, 2);
FDetailDataSets[0] := CdsSelExportDtl;
FDetailDataSets[1] := CdsSelExpense;
RepDataSetNames := '销售开单;销单开单明细;销售开单费用';
sRepSection := '药品销售开单';
CdsFieldProPerty.ProviderName:='DspTemp';
iClientID:=LogonInfo^.ClientID;
SvrSelExport:=IFmMain.GetConnection(Handle,'','ckSalesBase.SalesBase');
sBillNoList.Text := SvrSelExport.AppServer.GetCurrMonthBills(iClientID, 'SelExport');
CdsSelExport.RemoteServer:=SvrSelExport;
SetGressHint('正在连接到公用信息服务器...');
SvrCommon:=IFmMain.GetConnection(Handle,'','CommonSvr.CommonRDM');
CdsFieldProPerty.RemoteServer:=SvrCommon;
SetGressHint('读取用户操作权限...');
BillType := 'SelExport';
IFmMain.SetActionStatus(ActionList1, hInstance, ClassName);
CanAudit := ActAudit.Enabled;
CanRevert:= ActRevert.Enabled;
MasterDataSet:=CdsSelExport;
dbgSelExportDtl.SetAutoSort('');
dbgSelExpense.SetAutoSort('');
end;
procedure TFmSelExport.FormShow(Sender: TObject);
begin
LoadFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [dbgSelExportDtl,dbgSelExpense]);
SetGressHint('初始化本地环境...');
SetGridEhColor([dbgSelExpense,dbgSelExportDtl]);
SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFmSelExport.Xml');
SetFieldProperty(CdsFieldProPerty,CdsSelExport, 'SelExport');
SetFieldProperty(CdsFieldProPerty,CdsSelExportDtl, 'SelExportDtl,Goodses');
SetFieldProperty(CdsFieldProPerty,CdsSelExpense, 'SelExpense');
SetGressHint('读取历史单据...');
ShowPayModes;
SetCurrBillIdx(0);
inherited;
FreeGressForm;
end;
procedure TFmSelExport.ActSaveExecute(Sender: TObject);
Var iIndex:Integer;
begin
Try
edBillNo.SetFocus;
If FEditMode=0 then Exit;
iIndex:=cbPayModes.ItemIndex;
if iIndex<>-1 then
CdsSelExportPayModeNo.Value:=slPayModes[iIndex];
Inherited;
Except
On E:Exception Do
Messagebox(Handle,Pchar(E.Message),'错误',16);
end;
end;
procedure TFmSelExport.ActUpdateExecute(Sender: TObject);
begin
If CdsSelExportTransfer.Value then begin
Messagebox(Handle,Pchar('当前的单据已[审核],不能进行修改操作!'),'警告',64);
Exit;
end;
inherited;
BeforeEmpNo :='';
BeforeCustNo:='';
end;
procedure TFmSelExport.ActDeleteExecute(Sender: TObject);
begin
If CdsSelExportTransfer.Value then begin
Messagebox(Handle,Pchar('当前的单据已[审核],不能执行删除操作!'),'警告:',64);
Exit;
end;
inherited;
end;
procedure TFmSelExport.ActAddSubItemExecute(Sender: TObject);
begin
If FEditMode=0 then Exit;
If not(CdsSelExport.State In dsEditModes) then Exit;
If Pgc1.ActivePageIndex=0 then
CdsSelExportDtl.Append
else
CdsSelExpense.Append;
end;
procedure TFmSelExport.ActDelSubItemExecute(Sender: TObject);
begin
If FEditMode=0 then Exit;
IF PgC1.ActivePageIndex=0 then begin
if CdsSelExportDtl.IsEmpty then Exit;
CdsSelExportDtl.Delete;
end else begin
if CdsSelExpense.IsEmpty then Exit;
CdsSelExPense.Delete;
end;
end;
procedure TFmSelExport.CdsSelExportReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
Messagebox(Handle,Pchar(E.Message),'',16);
Action:=RaAbort;
end;
procedure TFmSelExport.CdsSelExportNewRecord(DataSet: TDataSet);
Var sBillNo:String;
begin
BeforeEmpNo :='';
BeforeCustNo:='';
edProvName.Button.Click;
sBillNo := BuildBillNo('SelExport');
CdsSelExportCreater.Value := LogonInfo^.UserID;
CdsSelExportGrup.Value := LogonInfo^.UserGrupID;
cdsSelExportBillNo.Value :=sBillNo;
CdsSelExportFDate.Value:=Date;
CdsSelExportPayDate.Value:=Date;
CdsSelExportInOutKind.Value:=0; //表示销售开单
edBillNo.SetFocus;
end;
procedure TFmSelExport.CdsSelExportDtlNewRecord(DataSet: TDataSet);
begin
BeforeGoodsID:='';
BeforeDepotNo:='';
CdsSelExportDtlItemNo.Value:=iLastItemNO;
CdsSelExportDtlBillNo.Value:=CdsSelExportBillNo.Value;
CdsSelExportDtlProdDate.Value:=Date;
CdsSelExportDtlValidDate.Value:=Date;
end;
procedure TFmSelExport.CdsSelExpenseNewRecord(DataSet: TDataSet);
begin
CdsSelExpenseBillNo.Value:=CdsSelExportBillNo.Value;
end;
procedure TFmSelExport.CdsSelExportDtlBeforeInsert(DataSet: TDataSet);
begin
iLastItemNO:=GetFieldMaxInt(CdsSelExportDtl,'ItemNO')+1;
end;
procedure TFmSelExport.CdsSelExportDtlAfterPost(DataSet: TDataSet);
var dGoodsSum,dTaxSum,dQty:Double;
mark1: TBookmark;
begin
BeforeGoodsID:='';
dGoodsSum:=0;
dTaxSum:=0;
dQty:=0;
with CdsSelExportDtl 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;
CdsSelExport.FieldByName('GoodsQty').AsFloat:=dQty;
CdsSelExport.FieldByName('GoodsSum').AsFloat:=dGoodsSum;
CdsSelExport.FieldByName('TaxSum').AsFloat:=dTaxSum;
CdsSelExport.FieldByName('Amount').AsFloat :=dGoodsSum+dTaxSum;
finally
GotoBookmark(Mark1);
FreeBookmark(Mark1);
EnableControls;
end;
end;
end;
procedure TFmSelExport.CdsSelExportAfterScroll(DataSet: TDataSet);
Var sModeNo:String;
iIndex:Integer;
begin
sModeNo:=CdsSelExportPayModeNo.Value;
iIndex:=slPayModes.IndexOf(sModeNO);
cbPayModes.ItemIndex:=iIndex;
If CdsSelExportTransfer.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 and CanAudit;
ActRevert.Enabled := False and CanRevert;
Lab_State.Caption :='单据状态:未审核';
Lab_State.Font.Color:=clHotLight;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -