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

📄 unttoutaccessory.pas

📁 销售软件
💻 PAS
字号:
(*===========================================================*)
(*                                                           *)
(*              Jerk Computer Assembly Manager               *)
(*                                                           *)
(*                    程序作者:杨芹勍                       *)
(*          武汉科技大学 理学院 信息与计算科学031班          *)
(*                  武汉科技大学 莘特工作室                  *)
(*                                                           *)
(*              IDE:Borland Delphi 2006 Update 2            *)
(*                 第三方控件:Raize 4.03                    *)
(*             数据库:Microsoft SQL Server 2000             *)
(*            数据库访问引擎:原生ADO(ADODB_TLB)           *)
(*           数据库管理引擎:JERK DBMANAGER ALPHA            *)
(*                                                           *)
(*           此软件及源代码归 JERK SYSTEM 版权所有           *)
(*            (C)Copyright 2002-2006 Jerk System.            *)
(*                                                           *)
(*===========================================================*)

unit untTOutAccessory;

interface

uses
  SysUtils,
  Variants,
  Classes,
  Forms,
  StdCtrls,
  ADODB_TLB,
  JCAMTableView,
  JCAMConsts,
  JCAMUtils;

const
  TN_OUTACCESSORY: string = 't_OutAccessory';
  VN_OUTACCESSORY: string = 'v_OutAccessory';
  KFN_OUTACCESSORY: string = 'OutAccessory_ID';
  FN_INACCESSORYNAME: string = 'InAccessory_Name';
  FN_CLIENTNAME: string = 'ClientName';
  FN_OUTDATE: string = 'OutDate';
  FN_OUTNUMBER: string = 'OutNumber';
  FN_INPRICE: string = 'InPrice';
  FN_OUTPRICE: string = 'OutPrice';
  FN_PROFIT: string = 'Profit';
  PN_SAVEOUTACCESSORYINFO: string = 'sp_SaveOutAccessoryInfo';
  PN_DELETEOUTACCESSORYINFO: string = 'sp_DeleteOutAccessoryInfo';
  PN_CHECKACCESSORYENOUGH: string = 'sp_CheckAccessoryEnough';

type
  TTableOutAccessory = class( TCustomTableView )
  private
  public
    property Connection;
    function CheckAccessoryEnough( sbxInfoList: TScrollBox ): Boolean;
    function TotalInPricesByCondition( sCondition: string ): Integer;
    function TotalOutPricesByCondition( sCondition: string ): Integer;
    function TotalProfitByCondition( sCondition: string ): Integer;
  end;

implementation

uses
  untTField,
  untTInAccessory;

{ TTableOutAccessory }

function TTableOutAccessory.CheckAccessoryEnough(
  sbxInfoList: TScrollBox ): Boolean;
const
  PVSTR_INACCESSORYID: string = 'InAccrssory_ID';
  PVSTR_OUTNUMBER: string = 'OutNumber';
  PVSTR_ISENOUGH: string = 'IsEnough';
var
  tia: TTableInAccessory;
  cmd: _Command;
  par: _Parameter;
  cmp: TComponent;
  pfp: PFieldProp;
  sInAccessoryName, sOutNumber: string;
  n, nInAccessoryID, nOutNumber: Integer;
begin
  { 检查配件是否足够 }

  Result := True;
  if ( Connection <> nil ) and ( sbxInfoList <> nil ) then
  begin
    sInAccessoryName := EmptyStr;
    sOutNumber := EmptyStr;
    nOutNumber := 0;
    for n := 0 to sbxInfoList.ComponentCount - 1 do
    begin
      cmp := sbxInfoList.Components[ n ];
      if cmp is TCustomEdit then
      begin
        // TODO: 在sbx的子控件中查找编辑框
        pfp := PFieldProp( Pointer( TCustomEdit( cmp ).Tag ) );
        if pfp^.FieldName = FN_INACCESSORYNAME then
          sInAccessoryName := TCustomEdit( cmp ).Text;
        if pfp^.FieldName = FN_OUTNUMBER then
        begin
          sOutNumber := TCustomEdit( cmp ).Text;
          nOutNumber := StrToInt( sOutNumber );
        end;
        if ( sInAccessoryName <> EmptyStr ) and ( sOutNumber <> EmptyStr ) then
          Break;
      end;
    end;

    // TODO: 获取进货配件ID
    tia := TTableInAccessory.Create;
    with tia do
    begin
      Connection := Self.Connection;
      InAccessoryName := sInAccessoryName;
      nInAccessoryID := InAccessoryID;
    end;
    FreeAndNil( tia );

    if nInAccessoryID <> -1 then
    begin
      // TODO: 调用存储过程
      cmd := CoCommand.Create;
      cmd.Set_ActiveConnection( Connection );
      cmd.CommandText := PN_CHECKACCESSORYENOUGH;
      cmd.CommandType := adCmdStoredProc;
      par := cmd.CreateParameter( PVSTR_RETURN, adVarChar,
        adParamReturnValue, 100, EmptyParam );
      cmd.Parameters.Append( par );
      par := cmd.CreateParameter( PVSTR_INACCESSORYID, adVarChar, adParamInput,
        100, nInAccessoryID );
      cmd.Parameters.Append( par );
      par := cmd.CreateParameter( PVSTR_OUTNUMBER, adVarChar, adParamInput, 100,
        nOutNumber );
      cmd.Parameters.Append( par );
      par := cmd.CreateParameter( PVSTR_ISENOUGH, adVarChar, adParamOutput, 100,
        EmptyParam );
      cmd.Parameters.Append( par );
      cmd.Execute( EmptyParam, EmptyParam, adCmdStoredProc + adExecuteNoRecords
        );
      if cmd.Parameters[ PVSTR_ISENOUGH ].Value = 0 then
        Result := False;
    end;
  end;
end;

function TTableOutAccessory.TotalInPricesByCondition( sCondition: string ):
  Integer;
begin
  Result := GetFieldSumByCondition( FN_INPRICE, VN_OUTACCESSORY, sCondition );
end;

function TTableOutAccessory.TotalOutPricesByCondition(
  sCondition: string ): Integer;
begin
  Result := GetFieldSumByCondition( FN_OUTPRICE, VN_OUTACCESSORY, sCondition );
end;

function TTableOutAccessory.TotalProfitByCondition( sCondition: string ):
  Integer;
begin
  Result := TotalOutPricesByCondition( sCondition ) - TotalInPricesByCondition(
    sCondition );
end;

end.

⌨️ 快捷键说明

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