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

📄 pm_pc_check.pas

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


Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Check, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
  ExtCtrls, ComCtrls, ToolWin, DBCtrls, jpeg, ExtPrintReport;

Type
  TFrm_Pm_Pc_Check = Class(TFrm_Base_Check)
    Label1: TLabel;
    DBText1: TDBText;
    DBText2: TDBText;
    Label2: TLabel;
    AdoQry_HeadPcNo: TStringField;
    AdoQry_HeadVendorCode: TStringField;
    AdoQry_HeadVendorName: TStringField;
    AdoQry_HeadVendorCodeName: TStringField;
    AdoQry_HeadPcDate: TDateTimeField;
    AdoQry_HeadPcTaxRate_Percent: TIntegerField;
    AdoQry_HeadCurrencyCode: TStringField;
    AdoQry_HeadCurrencyName: TStringField;
    AdoQry_HeadRemArk: TStringField;
    AdoQry_HeadTmpFlag: TIntegerField;
    AdoQry_HeadItemCode: TStringField;
    AdoQry_HeadItemName: TStringField;
    AdoQry_HeadItemCodeName: TStringField;
    AdoQry_HeadPcLineStatus: TIntegerField;
    AdoQry_HeadPcTaxPrice: TFloatField;
    AdoQry_HeadPcNoTaxPrice: TFloatField;
    AdoQry_HeadPcStArtDate: TDateTimeField;
    AdoQry_HeadPcendDate: TDateTimeField;
    AdoQry_HeadPcStArtQty: TFloatField;
    AdoQry_HeadPcendQty: TFloatField;
    AdoQry_HeadPcPriceType: TIntegerField;
    AdoQry_HeadPcLineId: TAutoIncField;
    AdoQry_HeadPcTaxPrice_Formal: TFloatField;
    AdoQry_HeadPcNoTaxPrice_Formal: TFloatField;
    AdoQry_HeadReferencePricePass: TIntegerField;
    AdoQry_HeadFormalPricePass: TIntegerField;
    procedure Act_CheckExecute(Sender: TObject);
    procedure Act_CancelCheckExecute(Sender: TObject);
    procedure DBGridEhTitleClick(Column: TColumnEh);
    procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
     Flag:Boolean ;
    { Private declarations }
  public
    { Public declarations }
    IsPriceRequestPass : Integer; //采购价格是否需要批准 0:不需要 1:需要
    procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    Function  ExistsSc(ItemCode:String) : Boolean; 
  end;

var
  Frm_Pm_Pc_Check: TFrm_Pm_Pc_Check;

implementation

uses Sys_Global,Pm_Pc_Check_C,Pm_Pc_Check_D;

{$R *.DFM}

{ TFrm_Pm_Pc_Check }

procedure TFrm_Pm_Pc_Check.InitForm(AdOConnection: TAdOConnection;
  ReadOnly: Boolean);
begin
  inherited;
  ExecuteSql(AdoQry_Tmp,'select * from PmParam '
                       +' where PmParamCode=''IsPriceRequestPass''',0);
  IsPriceRequestPass := AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger;
  Act_Check.Enabled := IIFValue(IsPriceRequestPass=0,False,True);
  Act_CancelCheck.Enabled := IIFValue(IsPriceRequestPass=0,False,True);
  Act_Modify.Enabled := IIFValue(IsPriceRequestPass=0,False,True);
  PriceFields:='PcNoTaxPrice,PcTaxPrice,';
  SelectFromSQL:='Select Pc.PcNo'
    +',Pc.VendorCode'
    +',Vendor.VendorName'
    +',Pc.VendorCode+'' ''+Vendor.VendorName As VendorCodeName'
    +',Pc.PcDate'
    +',Pc.PcTaxRate_Percent'
    +',Pc.CurrencyCode'
    +',Currency.CurrencyName'
    +',Pc.RemArk'
    +',PcLine.TmpFlag'
    +',PcLine.ItemCode'
    +',Item.ItemName'
    +',PcLine.ItemCode+'' ''+Item.ItemName As ItemCodeName'
    +',PcLine.PcLineStatus'
    +',PcLine.PcTaxPrice'
    +',PcLine.PcNoTaxPrice'
    +',PcLine.PcTaxPrice_Formal '
    +',PcLine.PcNoTaxPrice_Formal '
    +',PcLine.ReferencePricePass  '
    +',PcLine.FormalPricePass '
    +',PcLine.PcStArtDate'
    +',PcLine.PcendDate'
    +',PcLine.PcStArtQty'
    +',PcLine.PcendQty'
    +',PcLine.PcPriceType'
//    +',PcLine.PCReferencedPrice'
    +',PcLine.PcLineId'
    +' From PcLine'
    +' Left Join Pc On PcLine.PcNo=Pc.PcNo'
    +' Left Join Vendor On Pc.VendorCode=Vendor.VendorCode'
    +' Left Join Currency On Pc.CurrencyCode=Currency.CurrencyCode'
    +' Left Join Item on Item.ItemCode=PcLine.ItemCode';
  OrderByFields:='VendorCode,ItemCode,PcStArtDate,PcStArtQty';
  Frm_Sys_Condition:=TFrm_Pm_Pc_Check_C.Create(Self);
  Condition:='PcLine.ReferencePricePass=0';
  
  Act_Filter.Execute;
//  conditionuserDefine:=condition;
  Frm_Sys_Condition:=nil;
  Flag:=False;
end;

function TFrm_Pm_Pc_Check.ExistsSc(ItemCode: String): Boolean;
begin
  Result := True;
  ExecuteSql(AdoQry_Tmp,'select * from Sc_PriceMaster'
                       +' where ItemCode='+QuotedStr(ItemCode),0);
  If AdoQry_Tmp.RecordCount = 0 then   
  Result := False;
  ExecuteSql(AdoQry_Tmp,'select * from Sc_CostMaster'
                       +' where ItemCode='+QuotedStr(ItemCode),0);
  If AdoQry_Tmp.RecordCount = 0 then   
  Result := False;
                       
end;


procedure TFrm_Pm_Pc_Check.Act_CheckExecute(Sender: TObject);
var
  BookmArk:TBookmArk;
  SqlText : String;
begin
  inherited;
  if DispInfo('确定批准选定的采购价格项?',2)='n' then
    Exit;
  AdoQry_Head.DisableControls;
  BookmArk:=AdoQry_Head.GetBookmArk;
  AdoQry_Head.First;
  while not AdoQry_Head.Eof do
  begin
    if (AdoQry_Head.fieldbyname('TmpFlag').AsInteger = 1) 
     and ( AdoQry_Head.fieldbyname('PcTaxPrice').AsFloat>0)   then
    begin
       // 对批准记录操作日志
      If Not ExistsSc(AdoQry_Head.fieldbyname('ItemCode').AsString) then
      begin
        If DispInfo('物料'+QuotedStr(AdoQry_Head.fieldbyname('ItemCode').AsString)+'没有标准成本,是否将该价格作为标准成本价!',2)<>'y' then
        begin
          AdoQry_Head.Next;
          Continue;
        end;
        dbconnect.beginTrans;
        SqlText := ' DeclAre @PmCode Int '
                  +'  select @PmCode=PmCode from Item '
                  +'  where ItemCode='+QuotedStr(AdoQry_Head.fieldbyname('ItemCode').AsString)
                  +' select * from Sc_PriceMaster '
                  +'  where ItemCode='+QuotedStr(AdoQry_Head.fieldbyname('ItemCode').AsString)
                  +' 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(AdoQry_Head.fieldbyname('ItemCode').AsString)+','
                              +'Case When @PmCode=1 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=2 then 0 end,'
                              +'Case When @PmCode=2 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=1 then 0 end,'
                              +IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)+','
                              +'0.0,'
                              +'GetDate(),'
                              +QuotedStr(UserCode)+','
                              +'GetDate(),'
                              +QuotedStr(UserCode)
                  +'         ) '      
                  +' end  '

                  +' select * from Sc_CostMaster '
                  +'  where ItemCode='+QuotedStr(AdoQry_Head.fieldbyname('ItemCode').AsString)
                  +' 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(AdoQry_Head.fieldbyname('ItemCode').AsString)+','
                              +'Case When @PmCode=1 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=2 then 0 end,'
                              +'Case When @PmCode=2 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=1 then 0 end,'
                              +IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)+','
                              +'0.0,'
                              +'GetDate(),'
                              +QuotedStr(UserCode)+','
                              +'GetDate(),'
                              +QuotedStr(UserCode)
                  +'         ) '      
                  +' end  ' ;
    //    ShowMessage(SqlText);
        ExecuteSql(AdoQry_Tmp,SqlText,1)                  ;
                  
      end;
      If not dbconnect.InTransaction then 
      dbconnect.beginTrans;

      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Insert PcLineHistory'
        +'(PcNo,pclineid,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate'
        +',PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
        +' ReferencePricePass,FormalPricePass,PcLineStatus'
        +',ChgEmployeeCode,ChgTime,ChgType)'
        +' Values('
        +' '''+AdoQry_Head.fieldbyname('pcno').AsString+''''
        +','''+AdoQry_Head.fieldbyname('pclineid').AsString+''''
        +','''+AdoQry_Head.fieldbyname('ItemCode').AsString+''''
        +','+AdoQry_Head.fieldbyname('PcTaxPrice').AsString+''
        +','+AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString+''
        +','''+AdoQry_Head.fieldbyname('PcStArtDate').AsString+''''
        +','''+AdoQry_Head.fieldbyname('PcendDate').AsString+''''
        +','+AdoQry_Head.fieldbyname('PcStArtQty').AsString+''
        +','+AdoQry_Head.fieldbyname('PcendQty').AsString+''
        +','+AdoQry_Head.fieldbyname('PcPriceType').AsString+''
        +','+FloatToStr(AdoQry_Head.fieldbyname('PcTaxPrice_Formal').AsFloat)
        +','+FloatToStr(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat)
        +','+IntToStr(AdoQry_Head.fieldbyname('ReferencePricePass').AsInteger)
        +','+IntToStr(AdoQry_Head.fieldbyname('FormalPricePass').AsInteger)
//        +','+AdoQry_Head.fieldbyname('PcReferencedPrice').AsString+''
        +','+AdoQry_Head.fieldbyname('PcLineStatus').AsString+''
        +','''+UserCode+''''
        +',getdate()'
        +',''批准'''
        +')';

⌨️ 快捷键说明

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