⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selorderfrm.~pas

📁 医药连锁经营管理系统源码
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit SelOrderFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ceBaseBillFrm, DB, DBClient, ckDBClient, ActnList, ModuleAction,
  ImgList, TB2Dock, ExtCtrls, RzPanel, TB2Item, TB2Toolbar, StdCtrls, Mask,
  DBCtrls, Grids, DBGridEh, DbUtilsEh, EhLibCDS, xEhLibCtl, MConnect, RzEdit, RzDBEdit,
  ComCtrls, RzDTP, RzDBDTP,iMainFrm, RzDBBnEd, dbFuncs, Menus, Buttons,
  RzButton, SConnect, RzCmboBx,ShowProGress,uDataTypes,SelectCustFrm,
  SelectEmpFrm,ceGlobal, RzDBLbl, RzLabel,SelectCustLinkManFrm, RzDBCmbo;
type
  TFmSelOrder = class(TceBaseBillForm)
    cdsSelOrder: TckClientDataSet;
    cdsSelOrderDtl: TckClientDataSet;
    DsSelOrder: TDataSource;
    DsSelOrderDtl: TDataSource;
    Label1: TLabel;
    edBillNo: TRzDBEdit;
    Label2: TLabel;
    DBEdit2: TRzDBDateTimePicker;
    Label3: TLabel;
    DBEdit3: TRzDBEdit;
    Label4: TLabel;
    RzDBDateTimePicker1: TRzDBDateTimePicker;
    Label5: TLabel;
    RzDBDateTimePicker2: TRzDBDateTimePicker;
    Label6: TLabel;
    Label7: TLabel;
    Label10: TLabel;
    Label17: TLabel;
    DBEdit5: TRzDBEdit;
    Label9: TLabel;
    Label11: TLabel;
    DBEdit7: TRzDBEdit;
    DBEdit9: TRzDBEdit;
    Label12: TLabel;
    DBEdit10: TRzDBEdit;
    Label19: TLabel;
    DBEdit17: TRzDBEdit;
    Label13: TLabel;
    RzDBEdit1: TRzDBEdit;
    Label14: TLabel;
    RzDBEdit2: TRzDBEdit;
    Label20: TLabel;
    RzDBEdit3: TRzDBEdit;
    Label21: TLabel;
    RzDBEdit4: TRzDBEdit;
    Lab_State: TLabel;
    dbgSelOrderDtl: TxDBGridEh;
    edProvName: TRzDBButtonEdit;
    DComConn: TDCOMConnection;
    RzDBEdit5: TRzDBEdit;
    RzDBButtonEdit1: TRzDBButtonEdit;
    cdsSelOrderBillNo: TStringField;
    cdsSelOrderFDate: TDateTimeField;
    cdsSelOrderDealDate: TDateTimeField;
    cdsSelOrderEmpNo: TStringField;
    cdsSelOrderName: TStringField;
    cdsSelOrderAudit: TStringField;
    cdsSelOrderContractNO: TStringField;
    cdsSelOrderCustNo: TStringField;
    cdsSelOrderCustName: TStringField;
    cdsSelOrderLinkMan: TStringField;
    cdsSelOrderDealMode: TStringField;
    cdsSelOrderCarrKind: TStringField;
    cdsSelOrderCarrAddr: TStringField;
    cdsSelOrderGoodsQty: TBCDField;
    cdsSelOrderGoodsSum: TBCDField;
    cdsSelOrderTaxSum: TBCDField;
    cdsSelOrderAmount: TBCDField;
    cdsSelOrderPayModeNo: TStringField;
    cdsSelOrderPayDate: TDateTimeField;
    cdsSelOrderRemark: TStringField;
    cdsSelOrderTransfer: TBooleanField;
    cdsSelOrderFinish: TBooleanField;
    cdsSelOrderCreater: TStringField;
    cdsSelOrderMender: TStringField;
    cdsSelOrderGrup: TIntegerField;
    cdsSelOrderadsSelOrderDtl: TDataSetField;
    cbPayModes: TRzComboBox;
    cdsSelOrderDtlBillNo: TStringField;
    cdsSelOrderDtlItemNo: TIntegerField;
    cdsSelOrderDtlGoodsID: TStringField;
    cdsSelOrderDtlName: TStringField;
    cdsSelOrderDtlSpecs: TStringField;
    cdsSelOrderDtlUnit: TStringField;
    cdsSelOrderDtlQty: TBCDField;
    cdsSelOrderDtlOPrice: TFloatField;
    cdsSelOrderDtlRebate: TBCDField;
    cdsSelOrderDtlPrice: TFloatField;
    cdsSelOrderDtlTaxRate: TBCDField;
    cdsSelOrderDtlUnTaxPrice: TFloatField;
    cdsSelOrderDtlGoodsSum: TBCDField;
    cdsSelOrderDtlTaxSum: TBCDField;
    cdsSelOrderDtlAmount: TBCDField;
    cdsSelOrderDtlBatchNo: TStringField;
    cdsSelOrderDtlPaidUp: TBCDField;
    cdsSelOrderDtlCustGoodsID: TStringField;
    RzLabel7: TRzLabel;
    RzDBLabel1: TRzDBLabel;
    RzLabel16: TRzLabel;
    RzDBLabel2: TRzDBLabel;
    cdsSelOrderCreatTime: TDateTimeField;
    RzDBButtonEdit2: TRzDBButtonEdit;
    cdsSelOrderSignAddr: TStringField;
    cdsSelOrderBeginDate: TDateTimeField;
    cdsSelOrderEndDate: TDateTimeField;
    cdsSelOrderContractType: TStringField;
    cdsSelOrderPickAddr: TStringField;
    cdsSelOrderPayModeName: TStringField;
    cdsSelOrderTimeLimit: TIntegerField;
    RzLabel17: TRzLabel;
    RzDBEdit10: TRzDBEdit;
    RzLabel20: TRzLabel;
    RzLabel22: TRzLabel;
    RzLabel23: TRzLabel;
    RzLabel24: TRzLabel;
    RzDBDateTimePicker5: TRzDBDateTimePicker;
    RzDBDateTimePicker6: TRzDBDateTimePicker;
    RzDBComboBox1: TRzDBComboBox;
    RzDBEdit11: TRzDBEdit;
    Label8: TLabel;
    RzDBEdit6: TRzDBEdit;
    procedure ActSaveExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cdsSelOrderDtlBeforeInsert(DataSet: TDataSet);
    procedure cdsSelOrderDtlNewRecord(DataSet: TDataSet);
    procedure cdsSelOrderNewRecord(DataSet: TDataSet);
    procedure cdsSelOrderReconcileError(DataSet: TCustomClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    procedure ActAddSubItemExecute(Sender: TObject);
    procedure ActDelSubItemExecute(Sender: TObject);
    procedure cdsSelOrderDtlAfterPost(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure ActUpdateExecute(Sender: TObject);
    procedure ActDeleteExecute(Sender: TObject);
    procedure cdsSelOrderEmpNoChange(Sender: TField);
    procedure cdsSelOrderCustNoChange(Sender: TField);
    procedure cdsSelOrderDtlGoodsIDChange(Sender: TField);
    procedure dbgSelOrderDtlEditButtonClick(Sender: TObject);
    procedure cdsSelOrderAfterScroll(DataSet: TDataSet);
    procedure cdsSelOrderDtlQtyChange(Sender: TField);
    procedure ActAuditExecute(Sender: TObject);
    procedure ActRevertExecute(Sender: TObject);
    procedure ActFieldLayoutExecute(Sender: TObject);
    procedure ActDataExportExecute(Sender: TObject);
    procedure edProvNameButtonClick(Sender: TObject);
    procedure RzDBButtonEdit1ButtonClick(Sender: TObject);
    procedure ActBillTurnExecute(Sender: TObject);
    procedure RzDBButtonEdit2ButtonClick(Sender: TObject);
    procedure ActQueryExecute(Sender: TObject);
  private
    { Private declarations }
    CdsFieldProperty:TCkClientDataSet;
    SvrCommon,SvrSelOrder:TDispatchConnection;
    LocSetting: PLocSetting;
    BeforeCustNo,BeforeEmpNo,BeforeGoodsID:String;
    iClientID,iLastItemNO:Integer;
    bBrowGoods, CanAudit, CanRevert:Boolean;
    slPayModes:TStrings;
    Procedure SumCount;
    Procedure ShowPayModes;  //显示结算方式
    procedure ParseGoodsInfo;
  public
    { Public declarations }
  protected
    Function DoSome(cType: PChar; Values: Variant): Variant; override;     
  end;

Const
  sPayModes='Select PayModeNo,PayModename,TimeLimit From PayModes order By PayModeNO';
  sFieldProPerty='Select * From SysFieldProperty '+
        ' Where TableName in (''SelOrder'', ''SelOrderDtl'', ''Goodses'')';
var
  FmSelOrder: TFmSelOrder;

implementation
Uses SelectGoodsFrm,FieldsLayoutFrm,DataExportFrm,ViewGoodsPriceFrm,
  SelectBatchNoFrm;

{$R *.dfm}

procedure TFmSelOrder.FormCreate(Sender: TObject);
begin
  inherited;
  slPayModes:=TStringList.Create;
  CdsFieldProperty:=TCkClientDataSet.Create(Self);
  LocSetting := IFmMain.IFmMainEx.GetLocSetting;
  SetGressHint('正在登录到销售合同服务器...');
  CanAudit := ActAudit.Enabled;
  CanRevert:= ActCancel.Enabled;
  iClientID:=logonInfo^.ClientID;
  SetLength(FDetailDataSets, 1);
  FDetailDataSets[0] := cdsSelOrderDtl;
  RepDataSetNames := '销售合同;销售合同明细';
  sRepSection := '销售合同';
  SvrSelOrder:=iFmMain.GetConnection(Handle,'','ckSalesBase.SalesBase');

  sBillNoList.Text := SvrSelOrder.AppServer.GetCurrMonthBills(iClientID, 'SelOrder');

  cdsSelOrder.RemoteServer:=SvrSelOrder;
  SetGressHint('正在连接到公用信息服务器...');
  SvrCommon:=IFmMain.GetConnection(Handle,'','CommonSvr.CommonRDM');
  CdsFieldProPerty.ProviderName:='DspTemp';
  CdsFieldProperty.RemoteServer:=SvrCommon;
  SetGressHint('读取用户操作权限...');
  BillType := 'SelOrder';
  IFmMain.SetActionStatus(ActionList1, hInstance, self.ClassName);
  MasterDataSet := cdsSelOrder;
  dbgSelOrderDtl.SetAutoSort('');
end;

procedure TFmSelOrder.FormShow(Sender: TObject);
begin
  LoadFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [dbgSelOrderDtl]);
  SetGressHint('初始化本地环境...');
  SetGridEhColor(dbgSelOrderDtl);
  SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFmSelOrder.Xml');
  SetFieldProperty(CdsFieldProPerty,cdsSelOrder, 'SelOrder');
  SetFieldProperty(CdsFieldProPerty,cdsSelOrderDtl, 'SelOrderDtl,Goodses');
  SetGressHint('读取历史单据...');
  ShowPayModes;
  SetCurrBillIdx(0);
  inherited;
  FreeGressForm;
end;

procedure TFmSelOrder.ActSaveExecute(Sender: TObject);
Var iIndex:Integer;
begin
  If FEditMode=0 Then Exit;
  edBillNo.SetFocus;
  iIndex:=cbPayModes.ItemIndex;
  if iIndex<>-1 Then
    cdsSelOrderPayModeNo.Value:=slPayModes[iIndex];
  Inherited;
end;

procedure TFmSelOrder.cdsSelOrderDtlBeforeInsert(DataSet: TDataSet);
Begin
  iLastItemNO := GetFieldMaxInt(cdsSelOrderDtl, 'ItemNo')+1;
end;

procedure TFmSelOrder.cdsSelOrderDtlNewRecord(DataSet: TDataSet);
begin
  BeforeGoodsID:='';
  CdsSelOrderDtlItemNo.Value:=iLastItemNO;
  CdsSelOrderDtlBillNo.Value:=CdsSelOrderBillNO.Value;
end;

procedure TFmSelOrder.cdsSelOrderNewRecord(DataSet: TDataSet);
Var sBillNo:String;
Begin
  BeforeCustNo :='';
  BeforeEmpNo := '';
  edProvName.Button.Click;
  sBillNo := BuildBillNo('SelOrder');
  cdsSelOrderCreater.Value := LogonInfo^.UserID;
  CdsSelOrderGrup.Value := LogonInfo^.UserGrupID;
  cdsSelOrderBillNo.Value :=sBillNo;
  cdsSelOrderFDate.Value:=Date;
  cdsSelOrderDealDate.Value:=Date;
  cdsSelOrderPayDate.Value:=IncMonth(Date,12);
  CdsSelOrderBeginDate.Value := Date;
  CdsSelOrderEndDate.Value := IncMonth(Date,12);
end;

procedure TFmSelOrder.cdsSelOrderReconcileError(
  DataSet: TCustomClientDataSet; E: EReconcileError;
  UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
  Messagebox(Handle,Pchar(E.Message),'',16);
  Action:=RaAbort;
end;

procedure TFmSelOrder.ActAddSubItemExecute(Sender: TObject);
begin
  IF FEditMode=0 Then Exit;
  If Not(CdsSelOrder.State In dsEditModes) Then Exit;
  CdsSelOrderDtl.append;
end;

procedure TFmSelOrder.ActDelSubItemExecute(Sender: TObject);
begin
  If FEditMode=0 Then Exit;
	if CdsSelOrderDtl.IsEmpty then Exit;
  CdsSelOrderDtl.Delete;
end;

procedure TFmSelOrder.cdsSelOrderDtlAfterPost(DataSet: TDataSet);
var dGoodsSum,dTaxSum,dQty:Double;
		mark1: TBookmark;
begin
  BeforeGoodsID:='';
  dGoodsSum:=0;
  dTaxSum:=0;
  dQty:=0;
	with CdsSelOrderDtl 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;
      CdsSelOrder.FieldByName('GoodsQty').AsFloat:=dQty;
      CdsSelOrder.FieldByName('GoodsSum').AsFloat:=dGoodsSum;
      CdsSelOrder.FieldByName('TaxSum').AsFloat:=dTaxSum;
      CdsSelOrder.FieldByName('Amount').AsFloat :=dGoodsSum+dTaxSum;
    finally
    	GotoBookmark(Mark1);
      FreeBookmark(Mark1);
    	EnableControls;
    end;
  end;
end;

procedure TFmSelOrder.ActUpdateExecute(Sender: TObject);
begin
  If cdsSelOrderTransfer.Value  Then Begin
    Messagebox(Handle,Pchar('当前的销售合同已[审核],不能进行修改操作!'),nil,16);
    Exit;
  End;
  inherited;
  BeforeCustNo :='';
  BeforeEmpNo := '';
end;

procedure TFmSelOrder.ActDeleteExecute(Sender: TObject);
begin
  If cdsSelOrderTransfer.Value Then Begin
    Messagebox(Handle,Pchar('当前单据已[审核],不能执行删除操作!'),'警告',64);
    Exit;
  End;
  inherited;
end;

procedure TFmSelOrder.cdsSelOrderEmpNoChange(Sender: TField);
Var
  sEmpNo,sEmpName,LogText:String;
begin
  IF FEditMode=0 Then Exit;
  sEmpNo:=cdsSelOrderEmpNo.Value;
  If sEmpNo='' Then Exit;
  if sEmpNo=BeforeEmpNo Then Exit;
  BeforeEmpNo:=sEmpNO;
  sEmpName:=VarToStr(SvrCommon.AppServer.GetEmpInfo(iClientID,sEmpNo,1,'Name',LogText));
  cdsSelOrderName.Value:=sEmpName;
  If LogText<>'' Then Begin
    Messagebox(Handle,Pchar(LogText),nil,16);
    RzDBEdit5.SetFocus;
    Abort;
  End;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -