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

📄 sales.~pas

📁 this is sample for traders
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit Sales;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, frxClass, frxDBSet, JvGradientCaption, ImgList, DB, ComCtrls,
  StdCtrls, Buttons, JvExControls, JvComponent, JvDBLookup, Grids, DBGrids,
  JvExDBGrids, JvDBGrid, JvDBUltimGrid, DBNumEdit, JvToolEdit,
  JvDBControls, JvExMask, DBCtrls, Mask, JvStaticText, JclStrings, JclDateTime,
  ZAbstractRODataset,ZAbstractDataset, ZDataset, JvDBGridFooter, ExtCtrls,
  JvExExtCtrls, JvImage, DynamicSkinForm, ovcbase, ovcef, ovcpb, ovcnf,
  ovcdbnf, ovcpf, ovcdbpf, rxToolEdit, rxCurrEdit, RXDBCtrl, DBNumEditAlt;

type
  TSalesForm = class(TForm)
    LineSource: TDataSource;
    SjLgnSource: TDataSource;
    dsSales: TDataSource;
    GroupBox1: TGroupBox;
    LgnEdit: TJvDBComboEdit;
    Memo1: TMemo;
    GB2: TGroupBox;
    SPNOEDIT: TDBEdit;
    SJDateEdit: TJvDBDateEdit;
    JvStaticText2: TJvStaticText;
    GroupBox3: TGroupBox;
    LineGrid: TJvDBUltimGrid;
    dbneD1: TDBNumEdit;
    GroupBox4: TGroupBox;
    JvStaticText1: TJvStaticText;
    DBEdit1: TDBEdit;
    JvStaticText5: TJvStaticText;
    DBEdit2: TDBEdit;
    btnSave: TBitBtn;
    btnCancel: TBitBtn;
    dsSalesman: TDataSource;
    dbneQTY: TDBNumEdit;
    dsSatItem: TDataSource;
    JvStaticText3: TJvStaticText;
    LkSat: TJvDBLookupCombo;
    dsItemBySales: TDataSource;
    JvDBGrid1: TJvDBGrid;
    frxReport1: TfrxReport;
    spDynamicSkinForm1: TspDynamicSkinForm;
    JvStaticText4: TJvStaticText;
    JvStaticText7: TJvStaticText;
    LkJtempo: TJvDBLookupCombo;
    JvStaticText6: TJvStaticText;
    LKSalesman: TJvDBLookupCombo;
    Bevel1: TBevel;
    JvStaticText9: TJvStaticText;
    DBEdit3: TDBEdit;
    JvStaticText8: TJvStaticText;
    JCCEdit: TDBNumEdit;
    JvStaticText10: TJvStaticText;
    dbneDP: TDBNumEditAlt;
    procedure PickLgnNo(Sender: TObject);
    procedure PickPartNo(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure LineGridKeyPress(Sender: TObject; var Key: Char);
    procedure LineGridKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SjLgnSourceDataChange(Sender: TObject; Field: TField);
    procedure JCCEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure LkSatChange(Sender: TObject);
    procedure dbneQTYKeyPress(Sender: TObject; var Key: Char);
    procedure dbneD2Exit(Sender: TObject);
    procedure dbneQTYExit(Sender: TObject);
    procedure dbneD1Exit(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure dsSalesDataChange(Sender: TObject; Field: TField);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure frxReport1GetValue(const VarName: String;
      var Value: Variant);
  private
    function CodeValidate: Boolean;
    procedure PostingSales;
    function SavingAll: Boolean;
    procedure DirectPrint;
    procedure PiutangCard;
  public
    procedure Enter(nSP: String);
  end;

var
  SalesForm: TSalesForm;
  terbilang: string;

implementation

uses DataMod1, Main, FuncLib, FindItem, FindLgn, RPreview, NumberToWords,
  SelectGudang;

{$R *.dfm}

procedure TSalesForm.Enter(nSP: String);
begin
  SelectGudangForm:=TSelectGudangForm.Create(nil);
  if SelectGudangForm.ShowModalCODE = mrOk then
  begin
  try
    DM1.lgnBySales.Close;DM1.ItemBySales.Close;
    with DM1.qSales do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM SALES WHERE TRNO=:nSP ');
      ParamByName('nSP').Value:=nSP;
      Open;
    end;
    DM1.qSales.Append;
    DM1.qSalesTRNO.Value:=nSP;
  finally
    MainForm.CreateMDIChild(TSalesForm);
  end;
  end else
  begin
  Abort;
  end;
end;

procedure TSalesForm.PickLgnNo(Sender: TObject);
begin
  FindLgnForm:=TFindLgnForm.Create(Self);
  if FindLgnForm.ShowModalCODE = mrOk then
  begin
    DM1.qSALES.Edit;
    DM1.qSALESLGNCODE.Value := FindLgnForm.CODE;
  end;
end;

procedure TSalesForm.PickPartNo(Sender: TObject);
begin
  DM1.qSaleslineITEMCODE.FocusControl;
  FindItemForm:=TFindItemForm.Create(Self);
  if FindItemForm.ShowModalCODE = mrOk then
  begin
    if not DM1.qSalesline.Locate('ITEMCODE',FindItemForm.CODE,[]) then
    begin
    DM1.qSalesline.Append;
    DM1.qSALESLINE.Edit;
    DM1.qSALESLINEITEMCODE.Value := FindItemForm.CODE;
    if CodeValidate then LineGrid.SelectedField:=DM1.qSalesLineQTY;
    end else
    begin
      LineGrid.SelectedField:=DM1.qSalesLineQTY;
    end;
  end;
end;

function TSalesForm.CodeValidate: Boolean;
begin
  //if DM1.ItemBySales.State in [dsInActive] then PickPartNo(linegrid);
  if DM1.ItemBySales.RecordCount<>0 then
  begin
    Result:=True;
    DM1.qSalesLine.Edit;
    DM1.qSalesLineITEMNAME.Value := DM1.ItemBySales.FieldValues['ITEMNAME'];
    DM1.qSalesLinePRICE.Value := DM1.ItemBySales.FieldValues['SELLPRICE'];
    DM1.qSalesLineSAT.Value := DM1.ItemBySales.FieldValues['SAT'];
  end else
  begin
    Result:=False;
    DM1.qSalesLine.Delete;
  end;
end;

procedure TSalesForm.FormCreate(Sender: TObject);
begin
  DateSeparator := '-'; ShortDateFormat := 'dd/mm/yyyy';
  Top := 1; Left := 1; Width := 785; Height := 495;
end;

procedure TSalesForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    if not (ActiveControl is TDBGrid) then
    begin
      key := #0;
      Perform(WM_NEXTDLGCTL, 0, 0);
    end
end;

procedure TSalesForm.LineGridKeyPress(Sender: TObject; var Key: Char);
begin
  if Key in ['a'..'z'] then Dec(Key,32);
  if (key = Chr(9)) then LineGrid.SelectedField := DM1.qSaleslineITEMCODE;
  if (key = #13) then
  begin
    with TJvDBUltimGrid(ActiveControl) do
    begin
      if selectedindex = 1 then
      begin
        if CodeValidate then SelectedField:=DM1.qSalesLineQTY;
      end else if SelectedField = DM1.qSalesLineQTY then
      begin
          SelectedField:=DM1.qSalesLineDISC_1;
      end else if SelectedField = DM1.qSalesLineDISC_1 then
      begin
        SelectedField:=LineSource.DataSet.FieldByName('ITEMCODE');
        //if (DM1.qSalesLine.RecordCount<=11) and (DM1.itemBySalesHITSALDO.Value>=0) and (DM1.qSalesLineQTY.Value>0) then DM1.qSalesLine.Append;
        if (DM1.qSalesLine.RecordCount<=11) and (DM1.qSalesLineQTY.Value>0) then DM1.qSalesLine.Append;
      end;
    end;
  end;
end;

procedure TSalesForm.LineGridKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=(vk_f1) then PickPartNo(Sender);
  if (Shift = [ssCtrl]) and (Key = VK_DELETE) then Key := 0;
  if (key in [vk_next, vk_insert]) then key:=0;
  If (key in [vk_delete]) and (DM1.qSalesLine.State in [dsBrowse]) then
  DM1.qSalesLine.Delete;
end;

procedure TSalesForm.SjLgnSourceDataChange(Sender: TObject; Field: TField);
begin
  Memo1.Clear;
  if DM1.LgnBySales.RecordCount=1 then
  begin
  Memo1.Text := SjLgnSource.DataSet.FieldValues['JENIS']+' - '+
                SjLgnSource.DataSet.FieldValues['NAMALGN']+#13#10+
                SjLgnSource.DataSet.FieldValues['ADDRESS']+'-'+
                SjLgnSource.DataSet.FieldValues['CITY'];
  end;
end;

procedure TSalesForm.JCCEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=(vk_return) then Perform(WM_NEXTDLGCTL, 0, 0);
end;

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

procedure TSalesForm.LkSatChange(Sender: TObject);
begin
  DM1.qSalesLinePRICE.Value:=dsSatItem.DataSet.FieldValues['SELLPRICE'];
end;

procedure TSalesForm.dbneQTYKeyPress(Sender: TObject; var Key: Char);
begin
  //if Key in ['a'..'z'] then Dec(Key,32);
end;

procedure TSalesForm.dbneD2Exit(Sender: TObject);
begin
  LineGrid.SetFocus;
end;

⌨️ 快捷键说明

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