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

📄 purcomm.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit PurComm;

interface

uses
  Classes, SysUtils, Controls, Windows, Forms, ComCtrls, CommCtrl, DBGrids,
  Messages, Graphics, ADODB, ActiveX, SYSDATA, Dialogs, atScript, Variants,
  StdCtrls, DB;

//采购价格取值函数
procedure GetPurPrice(AItemNo,AUnitNo,ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty:Double;var APrice,ADiscount,AAmount:Double);
//取得标准采购价格
function GetStandardPurPrice(ACustNo,AItemNo,ACurrNo,AUnitNo:Integer;ADate:TDateTime):Double;
//取得總額折扣
procedure GetPurDiscount(ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty,AAmount:Double; var ADiscount:Double);

implementation

uses CommFun;

//采购价格取值函数
procedure GetPurPrice(AItemNo,AUnitNo,ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty:Double;var APrice,ADiscount,AAmount:Double);
var
  AStdPrice:Double;
begin
  APrice:=0;
  ADiscount:=0;
  AAmount:=0;

  if not IsExists('select 1 from ORD150 where O150_001='+IntToStr(ACustNo)) then
  begin
    Screen.Cursor:=crDefault;
    ShowMsg('UMS10000563');  //供应商号没有输入或输入不正确
    Abort;
  end;

  //1.取得标准价格
  AStdPrice:=GetStandardPurPrice(ACustNo,AItemNo,ACurrNo,AUnitNo,ADate);

  APrice:=AStdPrice;

  //特殊价格仅适用于指定的币别及条件,不作币别的转换
  //5.取得特殊价格
  //6A.取得特殊价格的设置脚本
//  if ASpecPrice<>0 then APrice:=ASpecPrice else APrice:=AStdPrice;

  AAmount:=AQty*APrice-ADiscount;
end;

//取得标准采购价格
function GetStandardPurPrice(ACustNo,AItemNo,ACurrNo,AUnitNo:Integer;ADate:TDateTime):Double;
var
  AUnitRate,ARate,APrice:Double;
  AItemID:String;
begin
  //1.取得计量单位换算率
  AUnitRate:=GetUnitRate(ACustNo,AItemNo,AUnitNo);

  //2.取得幣別彙率
  ARate:=GetCurrencyRate(ACurrNo);

  AItemID:=GetValue('select I150_002 from INV150 where I150_001='+IntToStr(AItemNo));
  //3.取得价格
  //3A.取得需求币别的价格
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select top 1 P120_005 from PUR120,GLD100');
  SYSDM.qryQuery.SQL.Add('where P120_003=G100_001 and P120_001='+IntToStr(ACustNo)+' and P120_002='+IntToStr(AItemNo));
  SYSDM.qryQuery.SQL.Add(' and P120_004<='+GetDateString(ADate));
  SYSDM.qryQuery.SQL.Add(' and G100_001='+IntToStr(ACurrNo));
  SYSDM.qryQuery.SQL.Add('order by P120_004 desc');
  SYSDM.qryQuery.Open;
  if not SYSDM.qryQuery.IsEmpty then
  begin
    APrice:=SYSDM.qryQuery.FieldByName('P120_005').Value;
    ARate:=1;
  end else
  //3B.取得本位币的价格,并换算成需求的币别价格,即价格=本位币价格/币别汇率
  begin
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select top 1 P120_005 from PUR120,GLD100');
    SYSDM.qryQuery.SQL.Add('where P120_003=G100_001 and P120_001='+IntToStr(ACustNo)+' and P120_002='+IntToStr(AItemNo));
    SYSDM.qryQuery.SQL.Add(' and P120_004<='+GetDateString(ADate));
    SYSDM.qryQuery.SQL.Add(' and G100_002='+''''+ACurrID+'''');
    SYSDM.qryQuery.SQL.Add('order by P120_004 desc');
    SYSDM.qryQuery.Open;
    if SYSDM.qryQuery.IsEmpty then
    begin
      Screen.Cursor:=crDefault;
      ShowMsg(AItemID+' '+GetDBString('UMS10000423'),1);  //该产品的本位币价格没有设置
      Abort;
    end;
    APrice:=SYSDM.qryQuery.FieldByName('P120_005').Value;
  end;

  //4.计算价格
  APrice:=APrice*AUnitRate;
  APrice:=APrice/ARate;
  Result:=APrice;
end;

//取得總額折扣
procedure GetPurDiscount(ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty,AAmount:Double; var ADiscount:Double);
//var
//  APrice:Double;
begin
  ADiscount:=0;
  //取得總額折扣金額
//  GetSpecPrice(ASpecID,0,ACurrNo,ACustNo,ASaleNo,ADate,AQty,APrice,ADiscount,AAmount);
end;

end.

⌨️ 快捷键说明

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