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

📄 sales.pas

📁 this is sample for traders
💻 PAS
📖 第 1 页 / 共 2 页
字号:
procedure TSalesForm.dbneQTYExit(Sender: TObject);
begin
  LineGrid.DataSource.DataSet.Post;
  LineGrid.SetFocus;
end;

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

function TSalesForm.SavingAll: Boolean;
begin
  DM1.qSales.Edit;
  DM1.qSales.FieldByName('TRTIME').Value:=time;
  DM1.qSales.FieldByName('TRSISA').Value:=DM1.qSales.FieldValues['CSISA'];
  DM1.qSales.FieldByName('J_ANGSURAN').Value:=DM1.qSales.FieldValues['CJANG'];
  DM1.qSales.FieldByName('TRDUE').Value:=DM1.qSales.FieldValues['GRANDTOTAL'];
  //DM1.qSales.FieldByName('TRNO').Value:=AutoFakNo;
  try
    DM1.qSalesLine.DisableControls;
    DM1.qSalesLine.First;
    while not DM1.qSalesLine.Eof do
    begin
      if DM1.qSaleslineQTY.Value<=0 then
      begin
        DM1.qSalesline.Delete
      end else
      begin
        DM1.qSalesLine.Edit;
        DM1.qSalesLine.FieldByName('TRNO').Value:=DM1.qSales.FieldValues['TRNO'];
        DM1.qSalesLineNETPRICE.Value:=DM1.qSalesLineCSUBTOTAL.Value/DM1.qSalesLineQTY.Value;
        DM1.qSalesline.Post;
      end;
      DM1.qSalesLine.Next;
    end;
  finally
    DM1.qSalesLine.EnableControls;
  end;
  //DM1.qSales.Post;

  try
    DM1.dtaCon.StartTransaction;
    DM1.qSalesline.ApplyUpdates; DM1.qSalesline.CommitUpdates;
    DM1.qSales.ApplyUpdates; DM1.qSalesline.CommitUpdates;
    //PostingSales;
    PiutangCard;
    DM1.dtaCon.Commit;
    Result:= True;
  except
    on E : Exception do
    begin
    ShowMessage(E.Message);
    DM1.dtaCon.Rollback;
    Result:= False;
    end;
  end;

end;

procedure TSalesForm.btnSaveClick(Sender: TObject);
begin
  if SavingAll then
  begin
    if Confirm('Print Faktur Penjualan ?'
       +CHR(13)+'FAKTUR-NO.# '+ DM1.qSales.fieldbyname('TRNO').Value) Then DirectPrint;
  end;
  Close;
end;

procedure TSalesForm.DirectPrint;
var
  ReportName: string;
begin
  ReportName:='Nota';
  with frxreport1 do
  begin
    terbilang := '#'+UpperCase(ConvertToWords(DM1.qSalesTRDUE.Value, True))+'#';
    LoadFromFile(ExtractFilePath(ParamStr(0)) + '..\Reports\'+ReportName+'.fr3');
    PrepareReport;
    PrintOptions.ShowDialog:=False;
    PrintOptions.PageNumbers:='1';
    Print;
  end;
end;

procedure TSalesForm.frxReport1GetValue(const VarName: String;
  var Value: Variant);
begin
  if CompareText(VarName, 'status') = 0 then Value := '';
  if CompareText(VarName, 'terbilang') = 0 then Value := terbilang;
end;

procedure TSalesForm.btnCancelClick(Sender: TObject);
begin
  with SQLp do
  begin
    Script.Clear;
    Script.Add('DELETE FROM REGSPNO WHERE SPNO=:nSP ;');
    ParamByName('nSP').Value:=SPNOEDIT.Field.Value;
    Execute;
  end;
  Close;
end;

procedure TSalesForm.dsSalesDataChange(Sender: TObject; Field: TField);
begin
  //terbilang := '#'+UpperCase(ConvertToWords(DM1.qSalesGRANDTOTAL.Value, True))+'#';
  //if (DM1.qSalesHITLIMIT.Value<=0) and not (SjLgnSource.DataSet.FieldByName('LGNCODE').IsNull) then JvImage1.Visible:=true else JvImage1.Visible:=false;
  if (DM1.qSalesGRANDTOTAL.Value<=0) or
  (LKSalesman.Value='0') or (LkJTempo.Value='0') then
  btnSave.Enabled:=False else btnSave.Enabled:=true;
end;

procedure TSalesForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  //DM1.lgnBySales.Close;DM1.salesmanBySales.Close;DM1.ItemBySales.Close;
end;

procedure TSalesForm.PostingSales;
var
  PrevRecord: TBookMark;
begin
  //Posting Item kepada Inventory
  PrevRecord := DM1.qSALESLINE.GetBookmark;
  try
    DM1.qSALESLINE.DisableControls;
    DM1.qSALESLINE.First;
    while not DM1.qSALESLINE.Eof do
    begin
      with qSQL do
      begin
        Close;
        SQL.clear;
        SQL.Add('UPDATE ITEM,SALESLINE SET ITEM.ONHAND = '+
                'ITEM.ONHAND - :nQTY,SALESLINE.POSTED=1 '+
                'WHERE ITEM.ITEMCODE=:nCode AND SALESLINE.TRNO=:nTRNO');
        ParamByName('nCode').Value :=DM1.qSalesLineITEMCODE.Value;
        ParamByName('nQTY').Value :=DM1.qSalesLineQTY.Value;
        ParamByName('nTRNO').Value :=DM1.qSalesTRNO.Value;
        ExecSQL;
      end;
      DM1.qSALESLINE.Next;
    end;
  finally
    DM1.qSALESLINE.EnableControls;
    if PrevRecord <> nil then
    begin
      DM1.qSALESLINE.GotoBookmark(PrevRecord);
      DM1.qSALESLINE.FreeBookmark(PrevRecord);
    end;
  end;
//Posting Piutang Langganan dari table sales
  try
    DM1.qSales.DisableControls;
      with qSQL do
      begin
        Close;
        SQL.clear;
        SQL.Add('UPDATE LGN,SALES SET LGN.CURBAL = '+
                'LGN.CURBAL + :nBAL,SALES.POSTED=1 '+
                'WHERE LGN.LGNCODE=:nCode AND SALES.TRNO=:nTRNO');
        ParamByName('nCode').Value :=DM1.qSalesLGNCODE.Value;
        ParamByName('nBal').Value :=DM1.qSalesTRDUE.Value;
        ParamByName('nTRNO').Value :=DM1.qSalesTRNO.Value;
        ExecSQL;
      end;
  finally
    DM1.qSales.EnableControls;
  end;
end;

procedure TSalesForm.PiutangCard;
var
  i:integer;
  N:integer;
  a:integer;
  x:integer;
  p:Double;    //uang muka yg dibayar...
  sqltext: string;
begin
  {if DM1.qSalesTRDP.Value <> 0 then
    p:=DataMod.SJLINEDISCOUNT.Value/DataMod.SJLINEANGSURAN.Value else p:=0;
  }
  if DM1.qSalesJTEMPO.Value='BULAN' then
  begin
      DM1.qSalesLINE.First;
      N:=DM1.qSalesANGSURAN.AsInteger;
      a:=0;
      for i:=1 to N do begin
        a:=a+30;
        with SQLp do
        begin
          Script.Clear;
          sqltext:= 'INSERT INTO SALESPAYCARD (SPNO,PAYNO,DUEDATE,LGNCODE,AMOUNT,PAYED) VALUES '+
          '(:nSP,:ni,:ndue,:nLgn,:njang,0);';
          Script.Add(sqltext);
          ParamByName('nSP').Value:=DM1.qSalesTRNO.Value;
          ParamByName('ni').Value:=i;
          ParamByName('ndue').AsDate:=(DM1.qSalesTRDATE.Value+a);
          ParamByName('nLgn').Value:=DM1.qSalesLGNCODE.Value;
          ParamByName('njang').Value:=DM1.qSalesJ_ANGSURAN.Value;
          Execute;
        end;
        //HK1.SetPosition(i,N);
      end;
  end;

  if DM1.qSalesJTEMPO.Value='MINGGU' then
  begin
      DM1.qSalesLINE.First;
      N:=DM1.qSalesANGSURAN.AsInteger;
      a:=0;
      for i:=1 to N do begin
        a:=a+7;
        with SQLp do
        begin
          Script.Clear;
          sqltext:= 'INSERT INTO SALESPAYCARD (SPNO,PAYNO,DUEDATE,LGNCODE,AMOUNT,PAYED) VALUES '+
          '(:nSP,:ni,:ndue,:nLgn,:njang,0);';
          Script.Add(sqltext);
          ParamByName('nSP').Value:=DM1.qSalesTRNO.Value;
          ParamByName('ni').Value:=i;
          ParamByName('ndue').AsDate:=(DM1.qSalesTRDATE.Value+a);
          ParamByName('nLgn').Value:=DM1.qSalesLGNCODE.Value;
          ParamByName('njang').Value:=DM1.qSalesJ_ANGSURAN.Value;
          Execute;
        end;
        //HK1.SetPosition(i,N);
      end;
  end;

  if DM1.qSalesJTEMPO.Value='HARI' then
  begin
      DM1.qSalesLINE.First;
      N:=DM1.qSalesANGSURAN.AsInteger;
      for i:=1 to N do begin
        with SQLp do
        begin
          Script.Clear;
          sqltext:= 'INSERT INTO SALESPAYCARD (SPNO,PAYNO,DUEDATE,LGNCODE,AMOUNT,PAYED) VALUES '+
          '(:nSP,:ni,:ndue,:nLgn,:njang,0);';
          Script.Add(sqltext);
          ParamByName('nSP').Value:=DM1.qSalesTRNO.Value;
          ParamByName('ni').Value:=i;
          ParamByName('ndue').AsDate:=(DM1.qSalesTRDATE.Value+i);
          ParamByName('nLgn').Value:=DM1.qSalesLGNCODE.Value;
          ParamByName('njang').Value:=DM1.qSalesJ_ANGSURAN.Value;
          Execute;
        end;
        //HK1.SetPosition(i,N);
      end;
  end;
end;


end.

⌨️ 快捷键说明

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