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

📄 fm_scrap.pas

📁 适合行业为眼镜业
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit fm_Scrap;
////2004-4-8 modify
interface

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

type
  TfmScrap = class(TfmBase)
    Panel1: TPanel;
    Panel2: TPanel;
    BitBtn7: TBitBtn;
    Panel3: TPanel;
    Label9: TLabel;
    edtremakt: TEdit;
    Label1: TLabel;
    Label4: TLabel;
    edtnewdate: TEdit;
    Label3: TLabel;
    edtcode: TEdit;
    Label6: TLabel;
    edtnewmen: TEdit;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    sgorder: TStringGrid;
    btnSave: TBitBtn;
    Bevel1: TBevel;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Bevel2: TBevel;
    Label5: TLabel;
    EdtTotalCount: TLabel;
    Label10: TLabel;
    edttotals: TLabel;
    Label7: TLabel;
    CmbG: TComboBox;
    Label8: TLabel;
    CmbC: TComboBox;
    Memo1: TMemo;
    BitBtn2: TBitBtn;
    btnprint: TBitBtn;
    procedure BitBtn7Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure sgorderDblClick(Sender: TObject);
    procedure sgorderSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure sgorderKeyPress(Sender: TObject; var Key: Char);
    procedure btnSaveClick(Sender: TObject);
    procedure sgorderDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnprintClick(Sender: TObject);
  private
    { Private declarations }
    flags:string;
    part_no,stockid:widestring;
    function readdata:boolean; // 绑定数据;
    procedure init;
    ///ydy add 2004-4-14
    procedure DeleteRow(Row: Integer);
    procedure TotalCount;  //汇总计算
    procedure ClearGrid;
  public
    { Public declarations }
    showmedel:string;
    maxnumber,state:integer;
    StockNum_List:TstringList;    ///用于存放一组数据各自的库存数量
  end;

var
  fmScrap: TfmScrap;

implementation
uses  dlg_bsselect,UntgoodCodeSelStr, func, untdatadm, Unitreportxf;

var
  pcol,prow:integer;

{$R *.dfm}
function tfmscrap.readdata:boolean;
var
  temp:widestring;
  i:integer;
  r:boolean;
begin
  r:=false;
  if Public_Do='damage_0002' then
  begin
    temp:='select * from dp_scrap as a,dp_scrapdetail as b,goods_prices as c where c.goods_no=b.sd_ccode and a.s_code=b.sd_scode and a.s_code='+''''+trim(list_no)+'''';
    dmmain.CDSquery2.Close;
    dmmain.CDSquery2.Data:=NULL;
    dmmain.CDSquery2.Data:=adisp.resultrecord(temp);
    try
    dmmain.CDSquery2.Open;
     temp:='select * from dp_scrap where s_code='+''''+trim(list_no)+''''; //打开主表
    if dmmain.CDSexecsql.Active then dmmain.CDSexecsql.Close;
    dmmain.CDSexecsql.Data:=null;
    dmmain.CDSexecsql.Data:=adisp.execSql(temp);
    dmmain.CDSexecsql.Open; 
    r:=true;
    bitbtn1.Enabled:=false;
    flags:='1';
    except
    end;
    edtnewdate.text:=dmmain.CDSquery2.fieldbyname('s_newdate').AsString;
    edtnewmen.text:=dmmain.CDSquery2.fieldbyname('s_newman').AsString;
    edtcode.text:=dmmain.CDSquery2.fieldbyname('s_code').AsString;
    cmbg.text:=dmmain.CDSquery2.fieldbyname('s_operater').AsString;
    cmbc.text:=dmmain.CDSquery2.fieldbyname('s_auditer').AsString;
    edtremakt.text:=dmmain.CDSquery2.fieldbyname('s_remark').AsString;
    part_no:=dmmain.CDSquery2.fieldbyname('s_shop').AsString;
    //stockid
    temp:='select storageid from part where part_no='+''''+trim(part_no)+'''';
    dmmain.CDSexecsql.Close;
    dmmain.CDSexecsql.Data:=null;
    try
    dmmain.CDSexecsql.Data:=adisp.execSql(temp);
    dmmain.CDSexecsql.Open;
    stockid:=trim(dmmain.CDSexecsql.fieldbyname('storageid').AsString);
    dmmain.CDSexecsql.Close;
    dmmain.CDSexecsql.Data:=null;
    except
      exit;
    end;
    ///
    sgorder.RowCount:=dmmain.CDSquery2.RecordCount+1;
    for i:=1 to dmmain.CDSquery2.RecordCount do
    begin
      sgorder.Cells[0,i]:=inttostr(i);
      sgorder.Cells[1,i]:=trim(dmmain.CDSquery2.fieldbyname('sd_ccode').AsString);
      sgorder.Cells[2,i]:=trim(dmmain.CDSquery2.fieldbyname('sd_cname').AsString);
      sgorder.Cells[4,i]:=trim(dmmain.CDSquery2.fieldbyname('sd_ccount').AsString);
      sgorder.Cells[8,i]:=trim(dmmain.CDSquery2.fieldbyname('baseprice').AsString);
      dmmain.CDSquery2.Next;
    end;
   GetDataPrint(dmmain.cdsprintmaster,dmmain.CDsquery2);
  end;
  result:=r;
end;
procedure tfmscrap.init;
var
  maks,sql,s_newdate:string;
  t_sql:widestring;
begin
  s_newdate:=formatdatetime('yyyy''-''mm''-''dd',date);
  sql:='select max(right(s_Code,4)) from DP_scrap where s_newdate='+''''+s_NewDate+''''+' and s_shop='+''''+trim(Handle_Part)+''''; //5-19 部门编号
  maks:='BS-'+Handle_Part+trim(handle_no); //shopid 5-11 用部门编号;
  edtcode.Text:=setcode(sql,maks); //Autoid
  edtremakt.Clear;
  flags:='1';
  state:=0;
  ClearGrid;
  t_sql:='select p_name from dp_person where p_workid='+''''+trim(Handle_Part)+'''';
  GetDataToComBoX(cmbg,t_sql,'p_name');
  cmbc.Items:=cmbg.Items;
  EdtTotalCount.Caption :='';
  edttotals.Caption :='';

end;

procedure TfmScrap.BitBtn7Click(Sender: TObject);
begin
  inherited;
  case Application.MessageBox('保存该报损单吗?','提示信息',mb_iconquestion+mb_YESNOCancel) of
    idYes: btnSave.Click;
    idNo: Close;
    idCancel :Abort;
  end;
end;

procedure TfmScrap.FormShow(Sender: TObject);
var
  t_sql :string;
begin
  inherited;
  sgorder.ColWidths[0] := 20;
  sgorder.Cells[1,0]:='商品编号';
  sgorder.ColWidths[2]:=100;      //设置 商品名称 列的宽度
  sgorder.Cells[2,0]:='商品名称';
  sgorder.Cells[3,0]:='商品单价';
  sgorder.Cells[4,0]:='商品数量';
  sgorder.Cells[5,0]:='商品折扣';
  sgorder.Cells[6,0]:='折扣后单价';
  sgorder.Cells[7,0]:='金额';
  sgorder.ColWidths[8]:=0; //成本假;
  sgorder.ColWidths[0] := 20;
  sgorder.ColWidths[1] := 130;
  sgorder.ColWidths[2] := 190;
  sgorder.ColWidths[6] := 70;

  if not readdata then
  begin
    init;
     edtnewdate.Text:=formatdatetime('yyyy''-''mm''-''dd',Date);
    edtnewmen.Text :=trim(Handle_Man);
    //t_sql:='select * from  [Chang] where Part ='+''''+trim(shopid)+'''';
    //GetDataToComBoX(cmbg,t_sql,'Employe_Name');
    //cmbg.ItemIndex := -1;
    //cmbc.Items := cmbg.Items;
  end;
end;

procedure TfmScrap.BitBtn1Click(Sender: TObject);
begin
  inherited;
  fmbsselect:=tfmbsselect.Create(self);
  fmbsselect.ShowModal;
  fmbsselect.Free;
  flags:='2';
end;

procedure TfmScrap.sgorderDblClick(Sender: TObject);
var
  i:integer;
begin
  inherited;
  if flags='1' then
  begin
  if pcol in [1,2,3] then
    begin
     fmgoodCodeSelStr:= TfmgoodCodeSelStr.Create(nil);
     try
     fmgoodcodeselStr.show_mode:='2';
     fmgoodcodeselStr.ShowModal;
     finally
     fmgoodcodeselStr.Free;
     end;
     memo1.Lines := StockNum_List;  ///test
{
      with tfmgoods.Create(self) do
      try
        show_mode:='2';
        ShowModal;
      finally
        Free;
      end;
}
    end;
  if pcol = 4 then  //复制数量
  begin
   for i := prow+1 to sgorder.rowcount -1 do
   begin
   sgorder.cells[4,i]:= sgorder.cells[4,prow];
   //同时要计算金额
   if strtoint(sgorder.Cells[4,i]) <= strtoint(StockNum_List[i-1]) then
   begin
      if trim(sgorder.Cells[6,i])<>'' then
      begin
        sgorder.Cells[7,i]:=floattostr(strtofloat(sgorder.Cells[6,i])*strtofloat(sgorder.Cells[4,i])); // 有折扣单价
      end else
      begin
        sgorder.Cells[7,i]:=floattostr(strtofloat(sgorder.Cells[3,i])*strtofloat(sgorder.Cells[4,i]));  //无折扣单价
      end;
      TotalCount; 
   end
   else  begin
      Application.MessageBox('输入数量已超过该商品库存数量,请重新输入!',pchar(application.Title),mb_iconwarning);
      sgorder.Cells[4,prow] := '';     //清空数据
      exit;
   end;

   end;
  end;
  end;
end;

procedure TfmScrap.sgorderSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  inherited;
  pcol:=acol;
  prow:=arow;
end;

procedure TfmScrap.sgorderKeyPress(Sender: TObject; var Key: Char);
var
   i:integer;
begin
  inherited;
  if flags='1' then
  begin
    if pcol in [4] then
    begin
      if not (key in ['0'..'9',#8,'.']) then
      begin
        key:=#0;
      end else
      begin
        if key<>#8 then
        begin
          if pcol=4 then
          begin
            if sgorder.Cells[4,prow]='0' then
            begin
            sgorder.Cells[4,prow] :=key ;
            end else
            begin
              sgorder.Cells[4,prow]:=sgorder.Cells[4,prow]+key;
            end;
          end;
        end else
        begin
          if pcol=4 then
          begin
            sgorder.Cells[4,prow]:='0';  //不加退格符号;
            sgorder.Cells[7,prow]:='';
             //汇总计算
           TotalCount;
          end;
          exit;
        end;
      end;
    end;
    if trim(sgorder.Cells[3,prow])<>'' then
    begin
//      if strtoint(sgorder.Cells[4,prow]) <= maxnumber then
      if strtoint(sgorder.Cells[4,prow]) <= strtoint(StockNum_List[prow-1]) then
      begin
        if trim(sgorder.Cells[6,prow])<>'' then
        begin
          sgorder.Cells[7,prow]:=floattostr(strtofloat(sgorder.Cells[6,prow])*strtofloat(sgorder.Cells[4,prow])); // 有折扣单价
        end else
        begin
          sgorder.Cells[7,prow]:=floattostr(strtofloat(sgorder.Cells[3,prow])*strtofloat(sgorder.Cells[4,prow]));  //无折扣单价
        end;
      end else
      begin
        Application.MessageBox('输入数量已超过该商品库存数量,请重新输入!',pchar(application.Title),mb_iconwarning);
        sgorder.Cells[4,prow] := '';     //清空数据
        exit;
      end;
    end else
    begin
      sgorder.Cells[7,prow]:='0';
    end;
  end;

    //汇总计算
    TotalCount;

end;

procedure TfmScrap.btnSaveClick(Sender: TObject);

var
  i,j,flag:integer;
  sql:widestring;
  start,ends,checkcode:olevariant;
  numbers,s_codes,goodsno,fieldnames:widestring;
  ZHbeg,zhend :string;
  temp:widestring;
begin
  inherited;
  if (trim(cmbg.Text)='') or (trim(cmbc.Text)='') then
  begin
    application.MessageBox('请选择报损经手人!',pchar(application.Title),mb_iconinformation);
    cmbg.SetFocus;
    exit;
  end;
  if trim(sgorder.Cells[1,1])='' then
  begin
    application.MessageBox('请选择报损商品明细!',pchar(application.Title),mb_iconinformation);

⌨️ 快捷键说明

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