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

📄 f_jscp.pas

📁 使用Delphi开发的成本管理系统
💻 PAS
字号:
unit f_jscp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, DB, ADODB;

type
  Tw_jscp = class(TForm)
    gb_1: TGroupBox;
    Label1: TLabel;
    SpeedButton1: TSpeedButton;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    Label7: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    Label9: TLabel;
    Edit9: TEdit;
    Label10: TLabel;
    Edit10: TEdit;
    GroupBox2: TGroupBox;
    ado_product: TADOQuery;
    ado_productproduct_id: TStringField;
    ado_productproduct_name: TStringField;
    ado_productproduct_amount: TIntegerField;
    ado_productproduct_price: TFloatField;
    ado_product_profit_cost: TADOQuery;
    data_product_profit_cost: TDataSource;
    ado_product_profit_costproduct_id: TStringField;
    ado_product_profit_costproduct_amount: TIntegerField;
    ado_product_profit_costproduct_income: TFloatField;
    ado_product_profit_costmaterial_cost: TFloatField;
    ado_product_profit_costlabor_cost: TFloatField;
    ado_product_profit_costoverhead: TFloatField;
    ado_product_profit_costtotal_cost: TFloatField;
    ado_product_profit_costunit_cost: TFloatField;
    ado_product_profit_costproduct_profit: TFloatField;
    ado_product_profit_costunit_profit: TFloatField;
    ado_material_master: TADOQuery;
    ado_material_masterproduct_id: TStringField;
    ado_material_mastermaterial_id: TStringField;
    ado_material_mastermaterial_unit: TFloatField;
    ado_material_masterunit_amount: TFloatField;
    ado_material_masterunit_cost: TFloatField;
    ado_labormaster: TADOQuery;
    ado_labormasterproduct_id: TStringField;
    ado_labormasterlabor_id: TStringField;
    ado_labormasterlabor_unit: TStringField;
    ado_labormasterunit_amount: TFloatField;
    ado_labormasterunit_cost: TFloatField;
    ado_overhead_distribute: TADOQuery;
    ado_overhead_distributeactive_id: TStringField;
    ado_overhead_distributecost_active_id: TStringField;
    ado_overhead_distributerate: TFloatField;
    ado_overhead_distributeproduct_id: TStringField;
    ado_overhead_distributeproduct_distribute_cost: TFloatField;
    DBGrid1: TDBGrid;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;

    procedure SpeedButton1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  w_jscp: Tw_jscp;

implementation

uses f_product_id;

{$R *.dfm}

procedure Tw_jscp.SpeedButton1Click(Sender: TObject);
begin
Application.CreateForm(Tw_product_id, w_product_id);
  if w_product_id.ShowModal = mrOk then
  Edit1.Text:=copy(trim(w_product_id.combobox1.text),1,5);
end;
procedure Tw_jscp.BitBtn1Click(Sender: TObject);
 var
  sum,sum1,sum2:real;
  s:string;
begin
sum:=0;
sum1:=0;
sum2:=0;
if edit1.Text <>'' then
begin
ado_product.Close;
ado_product.SQL.Clear;
ado_product.SQL.Add('select * from product where product_id='''+edit1.text+'''') ;
ado_product.Open;
edit2.Text:=ado_product.fieldbyname('product_amount').AsString;        //计算数量
edit3.Text:=floattostr(ado_product.fieldbyname('product_price').Value* ado_product.fieldbyname('product_amount').Value);  //计算产品收入
ado_material_master.Close;
ado_material_master.SQL.Clear;
ado_material_master.SQL.Add('select * from material_master where product_id='''+edit1.text+'''');
ado_material_master.Open;
ado_material_master.First;
 while not ado_material_master.Eof do
 begin
   sum:=sum+ado_material_master.FieldByName('unit_cost').Value;
   ado_material_master.Next;
end;
edit4.Text:=floattostr(sum*(strtofloat(edit2.Text)));        //计算直接材料
ado_labormaster.Close;
ado_labormaster.SQL.Clear;
ado_labormaster.SQL.Add('select * from labor_master where product_id='''+edit1.text+'''');
ado_labormaster.Open;
ado_labormaster.First;
while not ado_labormaster.Eof do
 begin
  sum1:=sum+ado_labormaster.fieldbyname('unit_cost').Value;
  ado_labormaster.Next;
 end;
 edit5.Text:=floattostr(sum1*(strtofloat(edit2.Text)));         //计算人工;

 ado_overhead_distribute.Close;
 ado_overhead_distribute.SQL.Clear;
 ado_overhead_distribute.SQL.Add('select * from overhead_distribute where product_id='''+edit1.text+'''');
 ado_overhead_distribute.Open;
  ado_overhead_distribute.First;
 while not  ado_overhead_distribute.Eof do
 begin
   sum2:=sum2+ ado_overhead_distribute.fieldbyname('product_distribute_cost').Value;
   ado_overhead_distribute.Next;
  end;
   str(sum2:8:2,s);
  edit6.Text:=s;                              //计算制造费用
 edit7.Text:=floattostr(strtofloat(edit4.Text)+strtofloat(edit5.Text)+strtofloat(edit6.Text));//计算总成本
 edit8.Text:= floattostr((strtofloat(edit7.Text))/(strtofloat(edit2.text)));  //单位成本
 edit9.Text:=floattostr(strtofloat(edit3.Text)-strtofloat(edit7.text));//计算产品利润
 edit10.Text:=floattostr(strtofloat(edit9.Text )/strtofloat(edit2.text));//计算单位利润

  ado_product_profit_cost.Close;
  ado_product_profit_cost.SQL.Clear;
  ado_product_profit_cost.SQL.Add('select * from product_profit_cost where product_id ='+char(39)+trim(edit1.Text)+char(39));
  ado_product_profit_cost.Open;
  if ado_product_profit_cost.IsEmpty  then begin
  ado_product_profit_cost.Append;
  ado_product_profit_cost.FieldByName('product_id').AsString:=trim(edit1.Text);
  ado_product_profit_cost.FieldByName('product_amount').AsString:=trim(edit2.text);
  ado_product_profit_cost.FieldByName('product_income').AsString:=trim(edit3.Text);
  ado_product_profit_cost.FieldByName('material_cost').AsString:=trim(edit4.Text);
  ado_product_profit_cost.FieldByName('labor_cost').AsString:=trim(edit5.text);
  ado_product_profit_cost.FieldByName('overhead').AsString:=trim(edit6.text);
  ado_product_profit_cost.FieldByName('total_cost').AsString:=trim(edit7.Text);
  ado_product_profit_cost.FieldByName('unit_cost').AsString:=trim(edit8.Text);
  ado_product_profit_cost.FieldByName('product_profit').AsString:=trim(edit9.Text);
  ado_product_profit_cost.FieldByName('unit_profit').AsString:=trim(edit10.Text) ;
  ado_product_profit_cost.Post ;
  ado_product_profit_cost.Close;
  ado_product_profit_cost.SQL.Clear;
  ado_product_profit_cost.SQL.Add('select * from product_profit_cost ');
  ado_product_profit_cost.Open;
   end
   else
    begin
    ado_product_profit_cost.Close;
    ado_product_profit_cost.SQL.Clear;
    ado_product_profit_cost.SQL.Add('select * from product_profit_cost ');
    ado_product_profit_cost.Open;
    application.MessageBox('该记录已经存在,不能插入,谢谢合作!!','提示',mb_ok+mb_iconinformation);
  end;
  end
else
  begin
   application.MessageBox('请输入产品号','提示',mb_ok+mb_iconinformation);
  end;
end;
procedure Tw_jscp.DBGrid1CellClick(Column: TColumn);
begin
if ado_product_profit_cost.RecordCount-1>0 then
begin
  edit1.Text:=trim(ado_product_profit_cost.FieldByName('product_id').AsString);
  edit2.Text :=trim(ado_product_profit_cost.FieldByName('product_amount').AsString);
  edit3.Text:=trim(ado_product_profit_cost.FieldByName('product_income').AsString);
  edit4.Text:=trim(ado_product_profit_cost.FieldByName('material_cost').AsString);
  edit5.Text :=trim(ado_product_profit_cost.FieldByName('labor_cost').AsString);
  edit6.Text :=trim(ado_product_profit_cost.FieldByName('overhead').AsString);
  edit7.Text:=trim(ado_product_profit_cost.FieldByName('total_cost').AsString);
  edit8.Text:=trim(ado_product_profit_cost.FieldByName('unit_cost').AsString);
  edit9.Text:=trim(ado_product_profit_cost.FieldByName('product_profit').AsString);
  edit10.Text:=trim(ado_product_profit_cost.FieldByName('unit_profit').AsString);
end;
end;
procedure Tw_jscp.BitBtn2Click(Sender: TObject);
var
ss:string;
begin
ss:='';
if edit1.Text='' then
   begin
    application.MessageBox('您没有输入查询条件!请重新输入!','提示',mb_ok+mb_iconinformation);
   end
else
   begin
  if edit1.Text<>''  then
   ss:=ss+'and product_id='+''''+edit1.Text+'''';
   ss:='select * from product_profit_cost where 1=1'+ss;
   ado_product_profit_cost.Close;
   ado_product_profit_cost.SQL.Clear;
   ado_product_profit_cost.SQL.Add(ss);
   ado_product_profit_cost.SQL.Add('exec pro_product');
   ado_product_profit_cost.Open;
    if ado_product_profit_cost.RecordCount=0 then
      begin
          application.MessageBox('没有符合要求的记录,请和管理员联系,请重新输入!','提示',mb_ok+mb_iconinformation);
      end
    else begin
  edit1.Text:=trim(ado_product_profit_cost.FieldByName('product_id').AsString);
  edit2.Text :=trim(ado_product_profit_cost.FieldByName('product_amount').AsString);
  edit3.Text:=trim(ado_product_profit_cost.FieldByName('product_income').AsString);
  edit4.Text:=trim(ado_product_profit_cost.FieldByName('material_cost').AsString);
  edit5.Text :=trim(ado_product_profit_cost.FieldByName('labor_cost').AsString);
  edit6.Text :=trim(ado_product_profit_cost.FieldByName('overhead').AsString);
  edit7.Text:=trim(ado_product_profit_cost.FieldByName('total_cost').AsString);
  edit8.Text:=trim(ado_product_profit_cost.FieldByName('unit_cost').AsString);
  edit9.Text:=trim(ado_product_profit_cost.FieldByName('product_profit').AsString);
  edit10.Text:=trim(ado_product_profit_cost.FieldByName('unit_profit').AsString);
    end;
  end;
end;
procedure Tw_jscp.BitBtn3Click(Sender: TObject);
begin
edit1.Clear; edit2.Clear;edit3.Clear; edit4.Clear;edit5.Clear;
  edit6.Clear; edit7.Clear;  edit8.Clear; edit9.Clear;edit10.Clear;
end;

end.

⌨️ 快捷键说明

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