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

📄 selexportfrm.pas

📁 群星医药系统源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -