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

📄 pm_enter_purcharseprice_d.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Pm_Enter_PurcharsePrice_D;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Detail, Db, AdODB, ExtCtrls, StdCtrls, ExtEdit, Mask, linkedit;

Type
  TFrm_Pm_Enter_PurcharsePrice_D = Class(TFrm_Base_Detail)
    Label2: TLabel;
    Extedt_ItemCode: TLinkEdit;
    edt_ItemName: TEdit;
    Label5: TLabel;
    ExtEdt_VendorCode: TLinkEdit;
    Edt_VendorName: TEdit;
    Label11: TLabel;
    Lbl_UomName: TEdit;
    Label6: TLabel;
    Edt_TaxRate: TEdit;
    Label8: TLabel;
    Edt_CurrencyCode: TEdit;
    Edt_CurrencyName: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label1: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    MEdt_PcStArtDate: TMaskEdit;
    MEdt_PcendDate: TMaskEdit;
    Edt_PcStArtQty: TEdit;
    Edt_PcendQty: TEdit;
    Edt_PcTaxPrice: TEdit;
    Edt_PcNoTaxPrice: TEdit;
    CmBx_PcPriceType: TComboBox;
    Edt_PcTaxPrice_Formal: TEdit;
    Edt_PcNoTaxPrice_Formal: TEdit;
    procedure ItemCodeCheck(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure Extedt_ItemCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Extedt_ItemCodeExit(Sender: TObject);
    procedure ExtEdt_VendorCodeExit(Sender: TObject);
    procedure Edt_PcTaxPrice_FormalExit(Sender: TObject);
    procedure Edt_PcTaxPriceExit(Sender: TObject);
    procedure Edt_PcNoTaxPriceExit(Sender: TObject);
    procedure Edt_PcNoTaxPrice_FormalExit(Sender: TObject);
    procedure Edt_PcStArtQtyExit(Sender: TObject);
    procedure Edt_PcendQtyExit(Sender: TObject);
    procedure MEdt_PcendDateExit(Sender: TObject);
    procedure Extedt_ItemCodeButtonClick(Sender: TObject);
  private
    CurrentUom:string; //记录当前'计量单位'
//    Function SaveHistory:Boolean;//保存历史记录
    { Private declarations }
  public
    IsPriceRequestPass : Integer; //0:  不需要 1:需要
    PcNo : String;
    procedure InitControls; Override;
    procedure SaveData;Override;
    procedure SetStatus(CurrentStatus:String;var EnableControls:String); Override;
    function  ExistsPC(VendorCode,ItemCode,sdate,edate:string;sqty,eqty:double):boolean;
    Function  ExistsSc(ItemCode:String) : Boolean; 
    { Public declarations }
  end;

var
  Frm_Pm_Enter_PurcharsePrice_D: TFrm_Pm_Enter_PurcharsePrice_D;

implementation

uses Sys_Global,Mrp_Global;

{$R *.DFM}

function checksymbol(Source:string;disptext:string):boolean;   //检查输入中是否有单引号
var
  i:integer;
  s:string;
begin
  s:=Trim(Source);
  for i:=1 to length(s) do
    if s[i]='''' then
    begin
      DispInfo(disptext+'中不能使用单引号!',1);
      Result:=False;
      exit;
    end;
  Result:=True;
end;


procedure TFrm_Pm_Enter_PurcharsePrice_D.InitControls;
begin
  Inherited;
  ExecuteSql(AdoQry_Tmp,'Select * from PmParam '
                       +' where PmParamCode=''ISPriceRequestPass''',0);
  IsPriceRequestPass := AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger;                       
  with AdoQry_Maintain do
  begin
    ExtEdt_VendorCode.Text := fieldbyname('VendorCode').AsString;
    Edt_VendorName.Text := fieldbyname('VendorName').AsString;
    ExtEdt_ItemCode.Text:=fieldbyname('ItemCode').AsString;
    Edt_ItemName.Text :=fieldbyname('ItemName').AsString;
    Lbl_UomName.Text :=fieldbyname('UomName').AsString;
    Edt_TaxRate.Text := FloatToStr(fieldbyname('PcTaxRate_Percent').AsFloat);
//    If Edt_TaxRate.Text='0' then Edt_TaxRate.Enabled := True
//    else Edt_TaxRate.Enabled := False;
    Edt_CurrencyCode.Text := fieldbyname('CurrencyCode').AsString;
    Edt_CurrencyName.Text := fieldbyname('CurrencyName').AsString;
    if (Status='Add') then
    begin
      PcNo := '';
      MEdt_PcStArtDate.Text := fieldbyname('PcStArtDate').AsString;
      If Trim(fieldbyname('PcStArtDate').AsString) = '' then
      MEdt_PcStArtDate.Text:=FormatDateTime('yyyy.mm.dd',Now);
      MEdt_PcendDate.Text := fieldbyname('PcendDate').AsString;
      If Trim(fieldbyname('PcendDate').AsString) = '' then 
      MEdt_PcendDate.Text:=FormatDateTime('yyyy.mm.dd',Now);
      CmBx_PcPriceType.ItemIndex:=0;
//      CmBx_PcReferencedPrice.ItemIndex:=0;
      Edt_PcTaxPrice.Text:='0';
      Edt_PcNoTaxPrice.Text:='0';
      Edt_PcTaxPrice_Formal.Text := '0';
      Edt_PcNoTaxPrice_Formal.Text := '0';
      Edt_PcStArtQty.Text:=IntToStr(fieldbyname('PcStArtQty').AsInteger);
      Edt_PcendQty.Text:=IntToStr(fieldbyname('PcendQty').AsInteger);
    end
    else
    begin
      PcNo := fieldbyname('PcNo').AsString;
      MEdt_PcStArtDate.Text:=FormatDateTime('yyyy.mm.dd',fieldbyname('PcStArtDate').AsDateTime);
      MEdt_PcendDate.Text:=FormatDateTime('yyyy.mm.dd',fieldbyname('PcendDate').AsDateTime);
      CmBx_PcPriceType.ItemIndex:=fieldbyname('PcPriceType').AsInteger;
//      CmBx_PcReferencedPrice.ItemIndex:=fieldbyname('PCReferencedPrice').AsInteger;
      Edt_PcTaxPrice.Text:=fieldbyname('PcTaxPrice').AsString;
      Edt_PcNoTaxPrice.Text:=fieldbyname('PcNoTaxPrice').AsString;
      Edt_PcTaxPrice_Formal.Text:=FloatToStr(fieldbyname('PcTaxPrice_Formal').AsFloat);
      Edt_PcNoTaxPrice_Formal.Text:=FloatToStr(fieldbyname('PcNoTaxPrice_Formal').AsFloat);
      Edt_PcStArtQty.Text:=IntToStr(fieldbyname('PcStArtQty').AsInteger);
      Edt_PcendQty.Text:=IntToStr(fieldbyname('PcendQty').AsInteger);
    end;
  end;
end;

procedure TFrm_Pm_Enter_PurcharsePrice_D.SaveData;
var SQlText : String;
begin
  inherited;
  If UpperCase(Status)=UpperCase('Add') then 
  begin
    If PcNo = ''  then 
    begin
      PcNo := GetNo(DBConnect,FormatDateTime('yymm',Now),'Pc');
      SqlText := 'Insert pc'+
                  '(PcNo,VendorCode,PCTaxRate_Percent,RemArk,CurrencyCode,PCDate)'+
                  'Values('''+PcNo+''''
                  +','''+ExtEdt_VendorCode.Text+''''
                  +','+Edt_TaxRate.Text+''
                  +','
                  +''''''
                  +','''+Edt_CurrencyCode.Text+''''
                  +','''+FormatDateTime('yyyy.mm.dd',Now)+''''
                  +')';

    end;
    SqlText := SQlText 
      +' Insert PcLine'+
      '(PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate,'+
      'PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
      +' PcLineStatus,ReferencePricePass,FormalPricePass)'+
      'Values('
      +' '''+PcNo+''''
      +','''+ExtEdt_ItemCode.Text+''''
      +','+Edt_PcTaxPrice.Text+''
      +','+Edt_PcNoTaxPrice.Text+''
      +','''+MEdt_PcStArtDate.Text+''''
      +','''+MEdt_PcendDate.Text+''''
      +','+Edt_PcStArtQty.Text+''
      +','+Edt_PcendQty.Text+''
      +','+IntToStr(Cmbx_PcPriceType.ItemIndex)+''
      +','+Edt_PcTaxPrice_Formal.Text
      +','+Edt_PcNoTaxPrice_Formal.Text+','
      +IIFString(IsPriceRequestPass=0,'1','0')
      +','+IIFString(IsPriceRequestPass=1,'0',IIfString(StrToFloat(Edt_PcNoTaxPrice.TExt)>0,'1','0'))
      +','+IIFString(IsPriceRequestPass=1,'0',IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.TExt)>0,'1','0'))
   //   +','+AdoQry_Maintain.fieldbyname('PcLineStatus').AsString+''
      +')';
      ExecuteSql(AdoQry_Tmp,SqlText,1);
      If Not ExistsSc(ExtEdt_ItemCode.Text) then
      begin
        SqlText := ' DeclAre @PmCode Int '
                  +'  select @PmCode=PmCode from Item '
                  +'  where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
                  +' select * from Sc_PriceMaster '
                  +'  where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
                  +' If @@RowCount=0  '
                  +' begin    '
                  +'   Insert Into Sc_PriceMaster(ItemCode,Cost_Material, '
                  +'                              Cost_Out,Price,Price_LastTime,Date_Create,EmployeeCode_Create,'
                  +'                              Date_Edit,EmployeeCode_Edit) ' 
                  +'   Values( '+QuotedStr(ExtEdt_ItemCode.Text)+','
                              +'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
                              +'     when @PmCode=2 then 0 end,'
                              +'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
                              +'     when @PmCode=1 then 0 end,'
                              +IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)+','
                              +'0.0,'
                              +'GetDate(),'
                              +QuotedStr(UserCode)+','
                              +'GetDate(),'
                              +QuotedStr(UserCode)
                  +'         ) '      
                  +' end  '

                  +' select * from Sc_CostMaster '
                  +'  where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
                  +' If @@RowCount=0  '
                  +' begin    '
                  +'   Insert Into Sc_CostMaster(ItemCode,Cost_Material, '
                  +'                              Cost_Out,Price,Price_LastTime,Date_Create,EmployeeCode_Create,'
                  +'                              Date_Edit,EmployeeCode_Edit) ' 
                  +'   Values( '+QuotedStr(ExtEdt_ItemCode.Text)+','
                              +'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
                              +'     when @PmCode=2 then 0 end,'
                              +'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
                              +'     when @PmCode=1 then 0 end,'
                              +IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)+','
                              +'0.0,'
                              +'GetDate(),'
                              +QuotedStr(UserCode)+','
                              +'GetDate(),'
                              +QuotedStr(UserCode)
                  +'         ) '      
                  +' end  ' ;
        ExecuteSql(AdoQry_Tmp,SqlText,1)                  ;
      end;
  end
  else begin
    SqlText := 'Update PcLine '
             +'    set PcTaxPrice='+Edt_PcTaxPrice.Text+','
             +'        PcNoTaxPrice='+Edt_PcNoTaxPrice.Text+','
             +'        PcTaxPrice_Formal='+Edt_PcTaxPrice_Formal.Text+','
             +'        PcNoTaxPrice_Formal='+Edt_PcNoTaxPrice_Formal.Text+','
             +'        PcStArtDate='+QuotedStr(MEdt_PcStArtDate.Text)+','
             +'        PcendDate='+QuotedStr(Medt_PcendDate.Text)+','
             +'        PcStArtQty='+Edt_PcStArtQty.Text+','
             +'        PcendQty='+Edt_PcendQty.Text
             +'  where PcNo='+QuotedStr(PcNo)
             +'   and PcLineId='+IntToStr(AdoQry_Maintain.fieldbyname('PcLineId').AsInteger);
    ExecuteSql(AdoQry_Tmp,SqlText,1) ;
  end;
  with AdoQry_Maintain do
  begin
    if Add  then Append else edit;
    If Add then 
    fieldbyname('PcNo').AsString := PcNo;
    fieldbyname('VendorCode').AsString := ExtEdt_VendorCode.Text;
    fieldbyname('VendorName').AsString := Edt_VendorName.Text;
    fieldbyname('ItemCode').AsString:=Trim(Extedt_ItemCode.text);
    fieldbyname('ItemName').AsString := Edt_ItemName.Text;
    fieldbyname('UomName').AsString := lbl_UomName.Text;
    fieldbyname('PcTaxRate_Percent').AsString := Edt_TaxRate.Text;
    fieldbyname('CurrencyCode').AsString := Edt_CurrencyCode.Text;
    fieldbyname('CurrencyName').AsString := Edt_CurrencyName.Text;
    fieldbyname('PcStArtDate').AsString := MEdt_PcStArtDate.Text;
    fieldbyname('PcendDate').AsString := MEdt_PcendDate.Text;
    fieldbyname('PcStArtQty').AsString := Edt_PcStArtQty.Text;
    fieldbyname('PcendQty').AsString := Edt_PcendQty.Text;
    fieldbyname('PcTaxPrice').AsString := Edt_PcTaxPrice.Text;
    fieldbyname('PcNoTaxPrice').AsString := Edt_PcNoTaxPrice.Text;
    fieldbyname('PcTaxPrice_Formal').AsString := Edt_PcTaxPrice_Formal.Text;
    fieldbyname('PcNoTaxPrice_Formal').AsString := Edt_PcNoTaxPrice_Formal.Text;
    If Add then 
    fieldbyname('PcDate').AsString := FormatDateTime('yyyy.mm.dd',Now);
    Post;
  end;

end;


procedure TFrm_Pm_Enter_PurcharsePrice_D.ItemCodeCheck(Sender: TObject);
var
  SqlText:String;
  Ado_Temp:TAdoQuery;
begin
  inherited;
  If Activecontrol.Name='btn_Cancel' Then
    Exit;
  Ado_Temp:=tAdoQuery.Create(nil);
  Ado_Temp.Connection:=AdoQry_Maintain.Connection;
  SqlText:=' select Item.*,Uom.* '
          +' from Item left outer join Uom on Item.UomCode=Uom.UomCode '
          +' where ItemCode='+''''+Trim(Extedt_ItemCode.Text)+''''
          +' And ItemType=0';
  Ado_Temp.Close;
  Ado_Temp.SQL.Text:=SqlText;
  Ado_Temp.Open;
  if Ado_Temp.RecordCount=0 then
  begin
    Ado_Temp.Free;
    DispInfo('你输入的物料代码不存在,请重新输入!',1);
    TWincontrol(sender).setfocus;
    abort;
  end
  else
    CurrentUom:=Ado_Temp.fieldbyname('UomName').asstring;
  Ado_Temp.Free;
end;

procedure TFrm_Pm_Enter_PurcharsePrice_D.btn_okClick(Sender: TObject);
var ExistsSc : Boolean;
    SqlText :String;
begin
  ExistsSc := True;
  If Trim(ExtEdt_VendorCode.Text)='' then 
  begin
    DispInfo('供应商代码不能为空!',1);
    ExtEdt_VendorCode.SetFocus;
    Abort;
  end;
  ExecuteSql(AdoQry_Tmp,'select * from PmParam '
                       +' where PmParamCode='+QuotedStr('PoPriceRequestispo'),0);
  If AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger = 1 then 
  begin
    SqlText := 'select * from ItemSampleNo '
              +' where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
              +'   and VendorCode='+QuotedStr(ExtEdt_VendorCode.Text)
              +'   and StArtDate<='+QuotedStr(Medt_PcStArtDate.Text)
              +'   and StArtDate<='+QuotedStr(Medt_PcendDate.Text)
              +'   and endDate>='+QuotedStr(Medt_PcendDate.Text);
    ExecuteSql(AdoQry_Tmp,SqlText,0);
    If AdoQry_Tmp.RecordCount=0 then 
    begin
      DispInfo('该供应商没有该物料该时间段的样品单号!',3);
      If Medt_PcStArtDate.CanFocus then
      Medt_PcStArtDate.SetFocus;
      Abort;
    end;
  end;                       
  if existsPC(ExtEdt_VendorCode.Text,Trim(Extedt_ItemCode.text),medt_PcstArtdate.Text,medt_Pcenddate.Text,strtofloat(edt_PcstArtqty.Text),strtofloat(edt_Pcendqty.text)) then

⌨️ 快捷键说明

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