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

📄 aggmain.pas

📁 基于OOP设计的一套较好的ERP系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    ArticoliDbAlqIva.AsFloat := IvaDbAliquota.AsFloat ;
end;

procedure Taggprezzi_main_form.AggiornaDaDocExecute(Sender: TObject);
Var
   NettoL,NettoE,IvatoE,IvatoL : Currency ;
   Sconto,Sconto2,Sconto3 : Real ;
   Articolo : String ;

Procedure PrePrezzi ;
 begin
   if qPrezziValuta.asString = 'L' then
    begin
     NettoL := qPrezziPrezzo.AsCurrency ;
     NettoE := qPrezziPrezzo.AsCurrency / 1936.27 ;
     IvatoL := NettoL * ( 1 + ArticoliDbAlqIva.AsFloat/100) ;
     IvatoE := NettoE * ( 1 + ArticoliDbAlqIva.AsFloat/100) ;
    end
   else
    begin
     NettoL := qPrezziPrezzo.AsCurrency * 1936.27;
     NettoE := qPrezziPrezzo.AsCurrency  ;
     IvatoL := NettoL * ( 1 + ArticoliDbAlqIva.AsFloat/100) ;
     IvatoE := NettoE * ( 1 + ArticoliDbAlqIva.AsFloat/100) ;
    end ;
   NettoL := ModuloDatiDocumenti.Round2(NettoL) ;
   IvatoL := ModuloDatiDocumenti.Round2(IvatoL) ;
   IvatoE := ModuloDatiDocumenti.Round2(IvatoE*10000) / 10000 ;
   NettoE := ModuloDatiDocumenti.Round2(NettoE*10000) / 10000 ;
 end;

Procedure PreGiornale ;
begin
    if GiornaleDb.FindKey([ArticoliDBIdGiornale.asString]) then
     giornaleDb.Edit
    else
     begin
      giornaleDb.Insert ;
      giornaleDbIdGiornale.AsString := ArticoliDbIdGiornale.asString ;
      giornaleDbNomeTab.AsString := 'Articoli.db' ;
     end ;
    GiornaleDbData.AsDateTime := Date ;
    GiornaleDbOra.Value := Time ;
    GiornaleDbOperatore.AsString :='AGGPRZ' ;
    GiornaleDbTipoOperazione.AsString := 'M' ;
    GiornaleDbFlag.AsString := '' ;
    GiornaleDb.Post ;
end;

Procedure Aggiorna ;
begin
  if nettoL <> 0 then
      begin
        If ArticoliDb.Findkey([articolo]) then
          begin
             Try
               ArticoliDb.Edit ;
               ArticoliDbPrezzoListinoL.AsCurrency := NettoL ;
               ArticoliDbPrezzoListinoE.AsCurrency := NettoE ;
               ArticoliDbPrezzoListinoLIvato.asCurrency := IvatoL ;
               ArticoliDbPrezzoListinoEIvato.AsCurrency := IvatoE ;
               ArticoliDbPrezzoAcquistoL.AsCurrency := NettoL * (1 - Sconto/100) * (1 - Sconto2/100)* (1 - Sconto3/100) ;
               ArticoliDbPrezzoAcquistoE.AsCurrency := NettoE * (1 - Sconto/100) * (1 - Sconto2/100)* (1 - Sconto3/100) ;
               ArticoliDbPrezzoAcquistoLIvato.AsCurrency := IvatoL * (1 - Sconto/100) * (1 - Sconto2/100)* (1 - Sconto3/100) ;
               ArticoliDbPrezzoAcquistoEIvato.AsCurrency := IvatoE * (1 - Sconto/100) * (1 - Sconto2/100)* (1 - Sconto3/100) ;
               ArticoliDbSconto.AsFloat := Sconto ;
               ArticoliDbSconto2.asFloat := Sconto2 ;
               ArticoliDbSconto3.AsFloat := Sconto3 ;
               ArticoliDb.Post ;
             finally
              PreGiornale ;
             end ;
          end ;
      end ;
end ;

begin
 if MessageDlg('Attenzione, questa operazione sostituisce i prezzi di acquisto in anagrafica articoli con l''ultimo prezzo caricato da documento.Proseguire ?',mtConfirmation,[mbYes,mbNo],0) = mrNo then exit ;
 qPrezzi.Close ;
 qprezzi.Open ;
 qPrezzi.First ;
 Barra.Max := qPrezzi.RecordCount ;
 articolo := qPrezziArticoloInterno.AsString ;
 NettoL := 0 ;
 NettoE := 0 ;
 IVatoE := 0 ;
 IVatoL := 0 ;
 While Not qPrezzi.Eof do
  begin
   Barra.Position := qprezzi.RecNo ;
   Application.ProcessMessages ;
   if Articolo <> QprezziArticoloInterno.AsString then
    begin
      Aggiorna ;
    end ;
   PrePrezzi ;
   Articolo := qPrezziArticoloInterno.asString;
   Sconto := qPrezziSconto.asFloat ;
   Sconto2 := qPrezziSconto2.asFloat ;
   Sconto3 := qPrezziSconto3.AsFloat ;
   qprezzi.Next ;
  end ;
 Aggiorna ;
 ShowMessage('Aggiornamento completato.') ;
 Close ;
end;

procedure Taggprezzi_main_form.EsciExecute(Sender: TObject);
begin
 if (TTAnomaliDisp.State = dsEdit) then TTAnomaliDisp.post ;
 release ;
end;

procedure Taggprezzi_main_form.VerificaExecute(Sender: TObject);
begin
 Verificatt(false) ;
end ;

procedure Taggprezzi_main_form.VerificaTT(tutti: boolean);
Var
   Scostamento : Real ;
   ScostBase   : Real ;
   RicAttuale  : Real ;
   i,code      : integer ;
   Scostati    : integer ;
   Errati      : integer ;
   inseriti    : integer ;
   Vp,Sc       : boolean ;
   Listino     : String ;

begin
 Scostamento_dlg := Tscostamento_Dlg.Create(self) ;
 Repeat
   scostamento_dlg.Showmodal;
   If Scostamento_Dlg.ModalResult = mrCancel then exit ;
   Val(Scostamento_Dlg.ScostamentoEdit.Text,Scostbase,Code) ;
   Scostamento_Dlg.Close ;
 until Code = 0 ;
 Listino := Scostamento_dlg.TTListiniListino.asString ;
 Scostamento_dlg.Release ;
 StatusBar1.SimpleText := 'Estrazione listino in corso, attendere....' ;
 StatusBar1.Update ;
 scostati := 0 ;
 errati := 0 ;
 inseriti := 0 ;
 Qverifica.Close ;
 Qverifica.Params.ParamByName('listinoPar').Value := Listino ;
 Qverifica.Prepare ;
 Qverifica.open ;
 ShowMessage('Estratti : ' + intToStr(QVerifica.RecordCount) + ' records.') ;
 StatusBar1.SimpleText := 'Elaborazione dati in corso, attendere....' ;
 StatusBar1.Update ;
 TTAnomalie.Close ;
 TTAnomalie.IndexDefs.Clear ;
 TTanomalie.IndexDefs.Add('', 'Fornitore;Articolo fornitore;Articolo', [ixPrimary, ixUnique]);
 TTAnomalie.CreateTable ;
 TTAnomalie.Open ;
 Barra.Max := Qverifica.RecordCount ;
 While not Qverifica.Eof do
  begin
   barra.position := Qverifica.RecNo ;
   application.processmessages ;
   if QverificaPrezzoAcquistoL.AsCurrency <> 0 then
    begin
      RicAttuale := ((QverificaPrezzoNettoL.AsCurrency -
                      QverificaPrezzoAcquistoL.AsCurrency) /
                      QverificaPrezzoAcquistoL.AsCurrency) * 100 ;
      Scostamento := RicAttuale - QVerificaRicarico.AsFloat;
    end
   else
      Scostamento := 100 ;
   Vp :=  (QverificaPrezzoNettoL.AsCurrency = 0) or
          (QVerificaPrezzoNettoE.AsCurrency = 0) or
          (QVerificaPrezzoIvatoL.asCurrency = 0) or
          (QverificaPrezzoIvatoE.AsCurrency = 0) ;
   sc :=  (Abs(Scostamento) > Scostbase) ;
   if Sc then inc(scostati) ;
   if Vp then inc(errati) ;
   if Not(Vp or Sc) then
    begin
     Qverifica.Next ;
     continue ;
    end ;

   TTAnomalie.Append ;
   for i := 0 to QVerifica.FieldCount - 1 do
    TTAnomalie.FieldByName(QVerifica.Fields[i].FieldName).Value := Qverifica.fields[i].Value ;
   TTAnomalieScostamento.AsFloat := Scostamento ;
   TTAnomalie.Post ;
   Inc(Inseriti) ;
   QVerifica.Next ;
  end ;
  ShowMessage('Inseriti : ' + intToStr(inseriti) + #13 +
              'Errati   : ' + intToStr(errati) + #13 +
              'Scostati : ' + intToStr(scostati)) ;
  StatusBar1.SimpleText := '' ;
  StatusBar1.update ;
  if inseriti > 0 then
   mostra.execute ;
end;


procedure Taggprezzi_main_form.VerificaTuttiExecute(Sender: TObject);
begin
 Verificatt(true) ;
end;

procedure Taggprezzi_main_form.MostraExecute(Sender: TObject);
begin
 Qfornitori.Open ;
 TTAnomaliDisp.Open ;
 pannello.visible := true ;
end;

procedure Taggprezzi_main_form.TTanomaliDispAfterPost(DataSet: TDataSet);
begin
 If ModuloDatiAnagrafiche.TTArticoli.Findkey([TTanomaliDispArticolo.asString]) then
  begin
   If ModuloDatiAnagrafiche.TTListino.Locate('Listino',TTanomaliDispListino.asString,[]) then
    begin
     ModuloDatiAnagrafiche.TTListino.Edit ;
     moduloDatiAnagrafiche.TTListinoPrezzoIvatoL.AsCurrency := TTAnomaliDispPrezzoIvatoL.AsCurrency ;
     ModuloDatiAnagrafiche.TTListino.post ;
    end
   else
    begin
     ShowMessage('Listino non trovato, prezzo non aggiornato.') ;
    end;
  end
 else
  ShowMessage('Articolo non trovato, prezzo non aggiornato.') ;
end;

procedure Taggprezzi_main_form.TTanomaliDispCalcFields(DataSet: TDataSet);
begin
 if ModuloDatiAnagrafiche.TTArticoli.Findkey([TTAnomaliDispArticolo.asString]) then
  begin
   if TTAnomaliDispPrezzoAcquistoL.AsCurrency <> 0 then
    TTanomaliDispRicAttuale.AsFloat := ((TTAnomaliDispPrezzoIvatoL.AsCurrency / (1 + ModuloDatiAnagrafiche.TTArticoliAliquotaIva.asFloat / 100)) -
                                       TTAnomaliDispPrezzoAcquistoL.AsCurrency) / TTAnomaliDispPrezzoAcquistoL.AsCurrency * 100 ;
  end ;

end;

end.

⌨️ 快捷键说明

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