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

📄 selreturnfrm.pas

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

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,
  uDataTypes,ShowProGress, RzDBLbl, RzLabel,ceGlobal,SelectCustLinkManFrm,
  SelectCustFrm,SelectEmpFrm,SelectDepotFrm;

type
  TFmSelReturn = class(TceBaseBillForm)
    DComConn: TDCOMConnection;
    dsSelReturn: 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;
    dbgSelReturnDtl: TxDBGridEh;
    Label12: TLabel;
    Label16: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    RzDBEdit4: TRzDBEdit;
    RzDBEdit5: TRzDBEdit;
    RzDBEdit6: TRzDBEdit;
    RzDBEdit7: TRzDBEdit;
    Label21: TLabel;
    DBEdit16: TRzDBEdit;
    dbgSelExpense: TxDBGridEh;
    dsSelReturnDtl: TDataSource;
    dsSelExpense: TDataSource;
    DBCheckBox1: TRzDBCheckBox;
    edProvName: TRzDBButtonEdit;
    cbPayModes: TRzComboBox;
    RzDBButtonEdit1: TRzDBButtonEdit;
    RzLabel7: TRzLabel;
    RzDBLabel1: TRzDBLabel;
    RzLabel16: TRzLabel;
    RzDBLabel2: TRzDBLabel;
    cdsSelExpense: TckClientDataSet;
    RzDBButtonEdit2: TRzDBButtonEdit;
    cdsSelExpenseBillNo: TStringField;
    cdsSelExpenseExpenseType: TStringField;
    cdsSelExpenseAmount: TBCDField;
    cdsSelExpenseRemark: TStringField;
    cdsSelReturn: TckClientDataSet;
    cdsSelReturnBillNo: TStringField;
    cdsSelReturnFDate: TDateTimeField;
    cdsSelReturnInOutKind: TSmallintField;
    cdsSelReturnOrderNo: TStringField;
    cdsSelReturnContractNo: TStringField;
    cdsSelReturnEmpNo: TStringField;
    cdsSelReturnEmpName: TStringField;
    cdsSelReturnAudit: TStringField;
    cdsSelReturnCustNo: TStringField;
    cdsSelReturnCustName: TStringField;
    cdsSelReturnLinkMan: TStringField;
    cdsSelReturnGoodsQty: TBCDField;
    cdsSelReturnGoodsSum: TBCDField;
    cdsSelReturnTaxSum: TBCDField;
    cdsSelReturnAmount: TBCDField;
    cdsSelReturnPayModeNo: TStringField;
    cdsSelReturnPayDate: TDateTimeField;
    cdsSelReturnRemark: TStringField;
    cdsSelReturnFungible: TBooleanField;
    cdsSelReturnTransfer: TBooleanField;
    cdsSelReturnFinish: TBooleanField;
    cdsSelReturnGrup: TIntegerField;
    cdsSelReturnAdsSelExpense: TDataSetField;
    cdsSelReturnAdsSelExportDtl: TDataSetField;
    cdsSelReturnCreater: TStringField;
    cdsSelReturnCreatTime: TDateTimeField;
    cdsSelReturnMender: TStringField;
    cdsSelReturnUpdateTime: TDateTimeField;
    cdsSelReturnDtl: TckClientDataSet;
    cdsSelReturnDtlBillNo: TStringField;
    cdsSelReturnDtlItemNo: TIntegerField;
    cdsSelReturnDtlGoodsID: TStringField;
    cdsSelReturnDtlName: TStringField;
    cdsSelReturnDtlSpecs: TStringField;
    cdsSelReturnDtlUnit: TStringField;
    cdsSelReturnDtlQty: TBCDField;
    cdsSelReturnDtlOPrice: TFloatField;
    cdsSelReturnDtlRebate: TBCDField;
    cdsSelReturnDtlPrice: TFloatField;
    cdsSelReturnDtlTaxRate: TBCDField;
    cdsSelReturnDtlUnTaxPrice: TFloatField;
    cdsSelReturnDtlGoodsSum: TBCDField;
    cdsSelReturnDtlTaxSum: TBCDField;
    cdsSelReturnDtlAmount: TBCDField;
    cdsSelReturnDtlBatchNo: TStringField;
    cdsSelReturnDtlProdDate: TDateTimeField;
    cdsSelReturnDtlValidDate: TDateTimeField;
    cdsSelReturnDtlDepotID: TIntegerField;
    cdsSelReturnDtlDepotNO: TStringField;
    cdsSelReturnDtlDepotName: TStringField;
    cdsSelReturnDtlBerthNo: TStringField;
    cdsSelReturnDtlPBillNo: TStringField;
    cdsSelReturnDtlPItemNo: TIntegerField;
    cdsSelReturnDtlPaidUp: TBCDField;
    cdsSelReturnDtlCustGoodsID: TStringField;
    cdsSelReturnDtlWholeDepot: TIntegerField;
    cdsSelReturnDtlWholeDepotNo: TStringField;
    cdsSelReturnDtlWholeDepotName: TStringField;
    cdsSelReturnDtlMidPackQty: TBCDField;
    cdsSelReturnDtlBigPackQty: TBCDField;
    cdsSelReturnDtlProvNo: 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 cdsSelReturnReconcileError(DataSet: TCustomClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    procedure cdsSelReturnNewRecord(DataSet: TDataSet);
    procedure cdsSelReturnDtlNewRecord(DataSet: TDataSet);
    procedure cdsSelExpenseNewRecord(DataSet: TDataSet);
    procedure cdsSelReturnDtlBeforeInsert(DataSet: TDataSet);
    procedure cdsSelReturnDtlAfterPost(DataSet: TDataSet);
    procedure cdsSelReturnAfterScroll(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure edProvNameButtonClick(Sender: TObject);
    procedure cdsSelReturnDtlGoodsIDChange(Sender: TField);
    procedure cdsSelReturnDtlOPriceChange(Sender: TField);
    procedure cdsSelReturnCustNoChange(Sender: TField);
    procedure cdsSelReturnEmpNoChange(Sender: TField);
    procedure dbgSelReturnDtlEditButtonClick(Sender: TObject);
    procedure cdsSelReturnDtlDepotNoChange(Sender: TField);
    procedure ActAuditExecute(Sender: TObject);
    procedure ActRevertExecute(Sender: TObject);
    procedure ActFieldLayoutExecute(Sender: TObject);
    procedure ActDataExportExecute(Sender: TObject);
    procedure RzDBButtonEdit2ButtonClick(Sender: TObject);
    procedure RzDBButtonEdit1ButtonClick(Sender: TObject);
    procedure ActQueryExecute(Sender: TObject);
    procedure cbPayModesChange(Sender: TObject);
  private
    SvrSelReturn,SvrCommon:TDispatchConnection;
    iLastItemNo,iClientID:Integer;
    CdsFieldProPerty:TCkClientDataSet;
    slPayModes:TStrings;
    LocSetting: PLocSetting;
    bBrowGoods,CanAudit, CanRevert:Boolean;
    BeforeDepotNo,BeforeGoodsID,BeforeCustNO,BeforeEmpNo:String;
    Procedure SumCount;
    Procedure ShowPayModes;  //显示结算方式
    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
  FmSelReturn: TFmSelReturn;

implementation

uses SelectGoodsFrm, SelectProvFrm, FieldsLayoutFrm, DataExportFrm, ViewGoodsPriceFrm;

{$R *.dfm}

procedure TFmSelReturn.FormCreate(Sender: TObject);
begin
  inherited;
  CdsFieldProPerty:=TCKClientDataSet.Create(Self);
  LocSetting := IFmMain.IFmMainEx.GetLocSetting;
  SetGressHint('正在登录到销售退回服务器...');
  CanAudit := ActAudit.Enabled;
  CanRevert:= ActCancel.Enabled;
  SvrSelReturn:=IFmMain.GetConnection(Handle,'','ckSalesBase.SalesBase');
  SetGressHint('正在连接到公用信息服务器...');
  SvrCommon:=IFmMain.GetConnection(Handle,'','CommonSvr.CommonRDM');
  SetGressHint('读取用户操作权限...');
  IFmMain.SetActionStatus(ActionList1, hInstance, self.ClassName);
  iClientID := LogonInfo^.ClientID;
  sBillNoList.Text := SvrSelReturn.AppServer.GetCurrMonthBills(iClientID, 'SelReturn');
  CdsFieldProPerty.ProviderName:='DspTemp';
  CdsFieldProPerty.RemoteServer:=SvrCommon;
  cdsSelReturn.RemoteServer:=SvrSelReturn;
  BillType :='SelReturn';
  MasterDataSet:=cdsSelReturn;
  SetLength(FDetailDataSets, 2);
  FDetailDataSets[0] := cdsSelReturnDtl;
  FDetailDataSets[1] := CdsSelExpense;
  RepDataSetNames := '销售退回;销售退回明细;销售退回费用';
  sRepSection := '药品销售退回';
  slPayModes:=TStringList.Create;
  dbgSelReturnDtl.SetAutoSort('');
  dbgSelExpense.SetAutoSort('');
end;

procedure TFmSelReturn.FormShow(Sender: TObject);
begin
  LoadFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [dbgSelReturnDtl,dbgSelExpense]);
  SetGressHint('初始化本地环境...');
  SetGridEhColor([dbgSelReturnDtl,dbgSelExpense]);
  SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFmSelReturn.Xml');
  SetFieldProperty(CdsFieldProPerty,cdsSelReturn, 'SelExport');
  SetFieldProperty(CdsFieldProPerty,cdsSelReturnDtl, 'SelExportDtl,Goodses');
  SetFieldProperty(CdsFieldProPerty,CdsSelExpense, 'SelExpense');
  SetGressHint('读取历史单据...');
  ShowPayModes;
  SetCurrBillIdx(0);
  inherited;
  FreeGressForm;
end;

procedure TFmSelReturn.ActSaveExecute(Sender: TObject);
Var iIndex:Integer;
begin
  Try
    if FEditMode=0 Then Exit;
    edBillNo.SetFocus;
    iIndex:=cbPayModes.ItemIndex;
    if iIndex<>-1 Then
      cdsSelReturnPayModeNo.Value:=slPayModes[iIndex];
    if (cdsSelReturnDtl.State In dsEditModes) Then
      cdsSelReturnDtl.Post;
    if CdsSelExpense.State in dsEditModes Then
      CdsSelExpense.Post;
    Inherited;
  Except
    On E:Exception Do
      Messagebox(Handle,Pchar(E.Message),'错误',16);
  End;
End;

procedure TFmSelReturn.ActUpdateExecute(Sender: TObject);
begin
  if cdsSelReturn.IsEmpty Then Exit;
  if cdsSelReturnTransfer.Value  Then Begin
    Messagebox(Handle,Pchar('当前的销售退回单已审核,不能进行修改操作!'),'错误',16);
    Exit;
  End;
  inherited;
end;

procedure TFmSelReturn.ActDeleteExecute(Sender: TObject);
begin
  Try
    if IsEditing then Exit;
    if cdsSelReturn.IsEmpty Then Exit;
    if cdsSelReturnTransfer.Value Then Begin
      Messagebox(Handle,Pchar('当前单据已[复核],不能执行删除操作!'),'警告:',64);
      Exit;
    End;
    if Application.MessageBox('确实要删除当前数据吗?','提示:',4+32)<>6 then Exit;
      inherited;
  Except
    On E:Exception Do
      Messagebox(Handle,Pchar(E.Message),'',16);
  End;
end;

procedure TFmSelReturn.ActAddSubItemExecute(Sender: TObject);
begin
  if FEditMode=0 Then Exit;
  if Not(cdsSelReturn.State In dsEditModes) Then Exit;
  if Pgc1.ActivePageIndex=0 Then
    cdsSelReturnDtl.Append
  Else
    CdsSelExpense.Append;
end;

procedure TFmSelReturn.ActDelSubItemExecute(Sender: TObject);
begin
  if FEditMode=0 Then Exit;
  if PgC1.ActivePageIndex=0 Then Begin
	  if cdsSelReturnDtl.IsEmpty then Exit;
      cdsSelReturnDtl.Delete;
  End Else Begin
  	if CdsSelExpense.IsEmpty Then Exit;
      CdsSelExPense.Delete;
  End;
End;

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

procedure TFmSelReturn.cdsSelReturnNewRecord(DataSet: TDataSet);
begin
  cdsSelReturnBillNo.Value := BuildBillNo('SelReturn');
  cdsSelReturnFDate.Value:=Date;
  cdsSelReturnPayDate.Value:=Date;
  cdsSelReturnCreater.Value := LogonInfo^.UserID;
  cdsSelReturnGrup.Value := LogonInfo^.UserGrupID;
  cdsSelReturnInOutKind.Value:=1;  //表示销售退回
end;

procedure TFmSelReturn.cdsSelReturnDtlNewRecord(DataSet: TDataSet);
begin
  BeforeGoodsID:='';
  BeforeDepotNo:='';
  cdsSelReturnDtlItemNo.Value:=iLastItemNO;
  cdsSelReturnDtlBillNo.Value:=cdsSelReturnBillNo.Value;
  cdsSelReturnDtlProdDate.Value:=Date;
  cdsSelReturnDtlValidDate.Value:=Date;
end;

procedure TFmSelReturn.cdsSelExpenseNewRecord(DataSet: TDataSet);
begin
  CdsSelExpenseBillNo.Value:=cdsSelReturnBillNo.Value;
end;

procedure TFmSelReturn.cdsSelReturnDtlBeforeInsert(DataSet: TDataSet);
begin
  iLastItemNO:=GetFieldMaxInt(cdsSelReturnDtl,'ItemNO')+1;
end;

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

procedure TFmSelReturn.cdsSelReturnAfterScroll(DataSet: TDataSet);
Var sModeNo:String;
    iIndex:Integer;
begin
  edProvName.Button.Click;
  sModeNo:=cdsSelReturnPayModeNo.Value;
  iIndex:=slPayModes.IndexOf(sModeNO);
  cbPayModes.ItemIndex:=iIndex;
  if cdsSelReturnTransfer.Value Then Begin

⌨️ 快捷键说明

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