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

📄 lsitem.~pas

📁 this is sample for traders
💻 ~PAS
字号:
unit LsItem;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, Menus, DB, StdCtrls, ExtCtrls, Grids, DBGrids,
  JvExDBGrids, JvDBGrid, JvDBUltimGrid, Buttons, JvExControls, JvComponent,
  JvDBLookup, JvStaticText, frxClass, frxDBSet, Provider, DBClient, JvMenus,
  ComCtrls, JvExComCtrls, JvStatusBar, JvExExtCtrls, JvRadioGroup,
  JvSpeedButton, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  JvExStdCtrls, JvButton, JvCtrls, JvFooter, JvExtComponent,
  JvGradientCaption, SkinCtrls, DynamicSkinForm;

type THackDBGrid = class(TJvDBUltimGrid);
type
  TLsItemForm = class(TForm)
    GroupBox3: TGroupBox;
    ItemGrid: TJvDBUltimGrid;
    dsItem: TDataSource;
    IL1: TImageList;
    dsItembrand: TDataSource;
    dsItemgrup: TDataSource;
    JvPopupMenu1: TJvPopupMenu;
    EditUbahRecordItem1: TMenuItem;
    EditUbahHarga1: TMenuItem;
    StBAR: TJvStatusBar;
    AddBtn: TSpeedButton;
    JvFooter1: TJvFooter;
    PrintSellPrice: TJvFooterBtn;
    btnTotalRec: TJvFooterBtn;
    RadioGroup1: TspSkinRadioGroup;
    N1: TMenuItem;
    frxReport1: TfrxReport;
    ImageList1: TImageList;
    spDynamicSkinForm1: TspDynamicSkinForm;
    spSkinGroupBox1: TspSkinGroupBox;
    edFind: TEdit;
    spSkinGroupBox2: TspSkinGroupBox;
    GroupLookUp: TJvDBLookupCombo;
    spSkinGroupBox3: TspSkinGroupBox;
    BrandLookUp: TJvDBLookupCombo;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure edFindChange(Sender: TObject);
    procedure dsItemDataChange(Sender: TObject; Field: TField);
    procedure RadioGroup1Click(Sender: TObject);
    procedure ItemGridKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure GroupLookUpChange(Sender: TObject);
    procedure BrandLookUpChange(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure EditUbahData1Click(Sender: TObject);
    procedure PurcCardClick(Sender: TObject);
    procedure HapusRecordClick(Sender: TObject);
    procedure EditUbahHarga1Click(Sender: TObject);
    procedure EditUbahRecordItem1Click(Sender: TObject);
    procedure AddBtnClick(Sender: TObject);
    procedure PrintSellPriceClick(Sender: TObject);
    procedure btnTotalRecClick(Sender: TObject);
  private
    procedure ViewData;
    procedure EditRec;
  public
  end;

var
  LsItemForm: TLsItemForm;
  PrevRec: TBookMark;

implementation

{$R *.dfm}

uses DataMod1, FuncLib, edItem, itemSellprice, RPreview;


procedure TLsItemForm.ViewData;
var
  sqltext: String;
begin
  if (GroupLookUp.Text='') and (BrandLookUp.Text='') then Exit;
  QueryPerformanceFrequency(Frequency);
  QueryPerformanceCounter(start);
  with DM1.qitem do
  begin
    Close;
        if (GroupLookUp.Text='') and (BrandLookUp.Text<>'') then
        sqltext:=('SELECT ITEM.ITEMCODE,ITEM.ITEMNAME,ITEM.SIZENAME,ITEM.GRUPCODE, ')+
                 ('ITEM.BRANDCODE,ITEM.ONHAND,ITEM_PRICE.SELLPRICE,ITEM_PRICE.CURR, ')+
                 ('ITEM_BRAND.BRANDNAME,ITEM_UNIT.UNITNAME AS SAT ')+
                 ('FROM ITEM,ITEM_PRICE,ITEM_BRAND,ITEM_UNIT ')+
                 ('WHERE ITEM.BRANDCODE=:BRANDCODE ')+
                 ('AND ITEM.ITEMCODE=ITEM_PRICE.ITEMCODE AND ITEM_PRICE.DEFAU=1 ')+
                 ('AND ITEM.UNITID=ITEM_UNIT.UNITID ')+
                 ('AND ITEM.BRANDCODE=ITEM_BRAND.BRANDCODE ')+
                 ('ORDER BY ITEM.ITEMCODE, ITEM.ITEMNAME ASC ');
        if (GroupLookUp.Text<>'') and (BrandLookup.Text='') then
        sqltext:=('SELECT ITEM.ITEMCODE,ITEM.ITEMNAME,ITEM.SIZENAME,ITEM.GRUPCODE, ')+
                 ('ITEM.BRANDCODE,ITEM.ONHAND,ITEM_PRICE.SELLPRICE,ITEM_PRICE.CURR, ')+
                 ('ITEM_BRAND.BRANDNAME,ITEM_UNIT.UNITNAME AS SAT ')+
                 ('FROM ITEM,ITEM_PRICE,ITEM_BRAND,ITEM_UNIT ')+
                 ('WHERE ITEM.GRUPCODE=:GRUPCODE ')+
                 ('AND ITEM.ITEMCODE=ITEM_PRICE.ITEMCODE AND ITEM_PRICE.DEFAU=1 ')+
                 ('AND ITEM.UNITID=ITEM_UNIT.UNITID ')+
                 ('AND ITEM.BRANDCODE=ITEM_BRAND.BRANDCODE ')+
                 ('ORDER BY ITEM.ITEMCODE, ITEM.ITEMNAME ASC ');
        if (GroupLookUp.Text<>'') and (BrandLookUp.Text<>'') then
        sqltext:=('SELECT ITEM.ITEMCODE,ITEM.ITEMNAME,ITEM.SIZENAME,ITEM.GRUPCODE, ')+
                 ('ITEM.BRANDCODE,ITEM.ONHAND,ITEM_PRICE.SELLPRICE,ITEM_PRICE.CURR, ')+
                 ('ITEM_BRAND.BRANDNAME,ITEM_UNIT.UNITNAME AS SAT ')+
                 ('FROM ITEM,ITEM_PRICE,ITEM_BRAND,ITEM_UNIT ')+
                 ('WHERE ITEM.GRUPCODE=:GRUPCODE ')+
                 ('AND ITEM.BRANDCODE=:BRANDCODE ')+
                 ('AND ITEM.ITEMCODE=ITEM_PRICE.ITEMCODE AND ITEM_PRICE.DEFAU=1 ')+
                 ('AND ITEM.UNITID=ITEM_UNIT.UNITID ')+
                 ('AND ITEM.BRANDCODE=ITEM_BRAND.BRANDCODE ')+
                 ('ORDER BY ITEM.ITEMCODE, ITEM.ITEMNAME ASC ');
    SQL.Text:=sqltext;
    if GroupLookUp.Text<>'' then Params.ParamByName('GRUPCODE').Value:=GroupLookUp.KeyValue;
    if BrandLookUp.Text<>'' then Params.ParamByName('BRANDCODE').Value:=BrandLookUp.KeyValue;
    Open;
  end;
  QueryPerformanceCounter(stop);
  stBAR.Panels[1].Text := ' >> '+format('%.2f',[(stop-start)/frequency])+' detik';
end;

procedure TLsItemForm.FormCreate(Sender: TObject);
begin
  Top:=1; Left:=1; Width := 785; Height := 490;
  DateSeparator := '-'; ShortDateFormat := 'dd/mm/yyyy';
  dsitembrand.DataSet.Open;
  dsitemgrup.DataSet.Open;
end;

procedure TLsItemForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TLsItemForm.edFindChange(Sender: TObject);
var
  sqltext: String;
begin
  if edFind.Text='' then Exit;
  QueryPerformanceFrequency(Frequency);
  QueryPerformanceCounter(start);
  with DM1.qitem do
  begin
    Close;
    if RadioGroup1.ItemIndex = 0 then
    begin
        sqltext:=('SELECT ITEM.*, ')+
                 ('ITEM_UNIT.UNITNAME AS SAT,ITEM_BRAND.BRANDNAME,ITEM_GRUP.GRUPNAME ')+
                 ('FROM ITEM,ITEM_UNIT,ITEM_BRAND,ITEM_GRUP ')+
                 ('WHERE ITEM.ITEMCODE LIKE :NCari ')+
                 ('AND ITEM.UNITID=ITEM_UNIT.UNITID ')+
                 ('AND ITEM.BRANDCODE=ITEM_BRAND.BRANDCODE ')+
                 ('AND ITEM.GRUPCODE=ITEM_GRUP.GRUPCODE ')+
                 ('ORDER BY ITEM.ITEMCODE, ITEM.ITEMNAME ASC ');
    end else
    begin
        sqltext:=('SELECT ITEM.*, ')+
                 ('ITEM_UNIT.UNITNAME AS SAT,ITEM_BRAND.BRANDNAME,ITEM_GRUP.GRUPNAME ')+
                 ('FROM ITEM,ITEM_UNIT,ITEM_BRAND,ITEM_GRUP ')+
                 ('WHERE ITEM.ITEMNAME LIKE :NCari ')+
                 ('AND ITEM.UNITID=ITEM_UNIT.UNITID ')+
                 ('AND ITEM.BRANDCODE=ITEM_BRAND.BRANDCODE ')+
                 ('AND ITEM.GRUPCODE=ITEM_GRUP.GRUPCODE ')+
                 ('ORDER BY ITEM.ITEMNAME, ITEM.ITEMCODE ASC ');
    end;
    SQL.Text:=sqltext;
    Params.ParamByName('NCari').Value:=edFind.Text+'%';
    Open;
    if (Recordcount = 0) and (RadioGroup1.ItemIndex = 0) then
    AddBtn.Enabled := True else AddBtn.Enabled := False;
    EnableControls;
  end;
  QueryPerformanceCounter(stop);
  stBAR.Panels[1].Text := ' >> '+format('%.2f',[(stop-start)/frequency])+' detik';
end;

procedure TLsItemForm.dsItemDataChange(Sender: TObject; Field: TField);
begin
  stBAR.Panels[0].Text := ' >> ' + FormatFloat('#,##0',DM1.qitem.RecordCount)+' Records';
end;

procedure TLsItemForm.RadioGroup1Click(Sender: TObject);
begin
  if RadioGroup1.ItemIndex = 0 then
  begin
    edFind.MaxLength := 20;
    DM1.qitem.IndexFieldNames:='ITEMCODE';
  end else
  begin
    edFind.MaxLength := 30;
    DM1.qitem.IndexFieldNames:='ITEMNAME';
  end;
  edFind.Clear;
  edFind.SetFocus;
end;

procedure TLsItemForm.ItemGridKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) and (Key = VK_DELETE) then Key := 0;
end;

procedure TLsItemForm.GroupLookUpChange(Sender: TObject);
begin
  ViewData;
end;

procedure TLsItemForm.BrandLookUpChange(Sender: TObject);
begin
  ViewData;
end;

procedure TLsItemForm.FormActivate(Sender: TObject);
begin
  if (DM1.qItem.State <> dsInActive) then RefreshRec(DM1.qItem);
  edFind.SetFocus;
end;

procedure TLsItemForm.EditUbahData1Click(Sender: TObject);
begin
  EditRec;
end;

procedure TLsItemForm.PurcCardClick(Sender: TObject);
var
  sqltxt: string; ReportName: string;
begin
  with DM1.qhispurc do
  begin
    Close;
    sqltxt:=('SELECT PURCLINE.QTY, PURCLINE.SAT, PURCLINE.PRICE, PURCLINE.BONUS,PURCLINE.DISC_1, PURCLINE.DISC_2, '+
            'PURC.SJNO, PURC.SJDATE, SPL.NAMASPL, ITEM.ITEMCODE, ITEM.ITEMNAME '+
            'FROM PURCLINE,PURC,SPL,ITEM '+
            'WHERE purcline.ITEMCODE =:nKODE AND purcline.trno=purc.trno '+
            'AND purc.splcode=spl.splcode AND '+
            'purcline.itemcode=item.itemcode Order By Purc.SJDATE DESC ');
    SQL.Text:=sqltxt;
    Params.ParamByName('nKODE').AsString:=DM1.qitem.FieldValues['ITEMCODE'];
    Open;
  end;
  ReportName:='purccard';
  RPreviewForm:=TRPreviewForm.Create(nil);
  try
  frxreport1.Preview := RPreviewForm.frxPreview1;
  frxreport1.LoadFromFile(ExtractFilePath(ParamStr(0)) + '..\Reports\'+ReportName+'.fr3');
  frxreport1.PrepareReport;
  frxreport1.ShowReport;
  RPreviewForm.ShowModal;
  finally
  RPreviewForm.Free;
  end;
end;

procedure TLsItemForm.HapusRecordClick(Sender: TObject);
begin
  {if ChkDeleteItem(DM1.qItem.FieldValues['ITEMCODE']) then
  begin
    if Confirm('Hapus Record Item : '+DM1.qItem.FieldValues['ITEMNAME']+#13#10+
    'Sekarang ...?') then
    begin
      DeleteRecItem(DM1.qItem.FieldValues['ITEMCODE']);
      RefreshRec(DM1.qItem);
    end;
  end else
  begin
    MessageDlg('Item ini sudah ada transaksi...!'+#13#10+'Tidak bisa di-hapus !!',mtWarning,[mbOK],0);
  end;
  }
end;

procedure TLsItemForm.EditUbahHarga1Click(Sender: TObject);
begin
  with DM1.qItempriceEdit do
  begin
    Close;
    SQL.Text:='SELECT * FROM ITEM_PRICE WHERE ITEMCODE=:ITEMCODE ;';
    Params.ParamByName('ITEMCODE').Value:=DM1.qItem.FieldValues['ITEMCODE'];
    Open;
  end;
  Item_PriceForm.Edit;
  RefreshRec(DM1.qItem);
end;

procedure TLsItemForm.EditRec;
begin
  with DM1.qitemedit do
  begin
    Close;
    SQL.Text:='SELECT * FROM ITEM WHERE ITEMCODE=:ITEMCODE ;';
    Params.ParamByName('ITEMCODE').Value:=DM1.qitem.FieldValues['ITEMCODE'];
    Open;
  end;
  edItemForm.Edit;
  RefreshRec(DM1.qItem);
end;

procedure TLsItemForm.EditUbahRecordItem1Click(Sender: TObject);
begin
  EditRec;
end;

procedure TLsItemForm.AddBtnClick(Sender: TObject);
begin
  with DM1.qItemEdit do
  begin
    Close;
    SQL.Text:='SELECT * FROM ITEM WHERE ITEMCODE=:ITEMCODE ';
    Params.ParamByName('ITEMCODE').Value:=edFind.Text;
    Open;
  end;
  if DM1.qItemEdit.RecordCount<>0 then
  MessageDlg('KODE sudah ada ...',mtWarning,[mbOk],0) else
  edItemForm.Enter(edFind.Text);
  RefreshRec(DM1.qItem);
end;

procedure TLsItemForm.PrintSellPriceClick(Sender: TObject);
var
  ReportName: string;
begin
  if DM1.qItem.RecordCount<>0 then
  begin
    DM1.qItem.DisableControls;
  ReportName:='itemprice';
  RPreviewForm:=TRPreviewForm.Create(nil);
  try
  frxreport1.Preview := RPreviewForm.frxPreview1;
  frxreport1.LoadFromFile(ExtractFilePath(ParamStr(0)) + '..\Reports\'+ReportName+'.fr3');
  frxreport1.PrepareReport;
  frxreport1.ShowReport;
  RPreviewForm.ShowModal;
  finally
  RPreviewForm.Free;
  end;
    DM1.qItem.EnableControls;
  end;
end;

procedure TLsItemForm.btnTotalRecClick(Sender: TObject);
var
  fdb: TZQuery;
begin
  Fdb := TZQuery.Create(nil); Fdb.Connection := DM1.dtaCon;
  with fdb do
  begin
    Close;
    SQL.Clear;
    SQL.Text:='SELECT COUNT(ITEMCODE) AS TOTAL FROM ITEM';
    Open;
  end;
  ShowMessage('TOTAL RECORD ITEM : '+#13#10+FormatFloat('#,##0',fdb.FieldValues['TOTAL'])+' Record...');
end;

end.

⌨️ 快捷键说明

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