📄 aggmain.pas
字号:
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 + -