📄 giacenza_u.~pa
字号:
unit giacenza_u;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, Grids, DBGrids, ActnList, ppEndUsr, ppProd,
ppClass, ppReport, ppComm, ppCache, ppDB, ppDBPipe, ppDBBDE, ppVar,
ppStrtch, ppMemo, ppCtrls, ppPrnabl, ppBands, ComCtrls, ToolWin, ExtCtrls,
TeEngine, Series, TeeProcs, Chart, DBChart, TeeFunci, DBCtrls, ppRelatv,
ppModule, DBSumLst, Buttons;
type
TGiacenza_form = class(TForm)
ActionList1: TActionList;
cercatutto: TAction;
Anagrafico: TAction;
ToolBar1: TToolBar;
Esegui: TAction;
Stampa: TAction;
Modifica: TAction;
Chiudi: TAction;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
Pagine: TPageControl;
Impostazione: TTabSheet;
Grafico: TTabSheet;
Chart: TDBChart;
Series1: TBarSeries;
Tabella: TTabSheet;
Panel1: TPanel;
Series2: TBarSeries;
Rimanenza: TCheckBox;
Venduto: TCheckBox;
TTParam: TTable;
TTParamFornitore: TStringField;
TTParamDeposito: TStringField;
TTParamMarca: TStringField;
TTParamCategoria: TStringField;
TTParamMerceologia: TStringField;
TTParamFornitoreLookUP: TStringField;
TTParamDepositoLookUP: TStringField;
TTParamMarcaLookUP: TStringField;
TTParamCategoriaLookUP: TStringField;
TTParamMerceologiaLookUP: TStringField;
TTParamTuttiifornitori: TBooleanField;
TTParamTuttiidepositi: TBooleanField;
TTParamTuttelemarche: TBooleanField;
TTParamTuttelecategorie: TBooleanField;
TTParamTuttelemerceologie: TBooleanField;
DSParam: TDataSource;
GroupBox1: TGroupBox;
Label1: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
Label2: TLabel;
DBLookupComboBox2: TDBLookupComboBox;
Label3: TLabel;
DBLookupComboBox3: TDBLookupComboBox;
Label4: TLabel;
DBLookupComboBox4: TDBLookupComboBox;
Label5: TLabel;
DBLookupComboBox5: TDBLookupComboBox;
DBCheckBox5: TDBCheckBox;
DBCheckBox4: TDBCheckBox;
DBCheckBox3: TDBCheckBox;
DBCheckBox2: TDBCheckBox;
DBCheckBox1: TDBCheckBox;
Mostragrafico: TAction;
Mostratabella: TAction;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
QSelezione: TQuery;
BatchMoveQselezione: TBatchMove;
QCalcoli1: TQuery;
Destinazione1: TTable;
QSelezioneDeposito: TStringField;
QSelezioneArticolointerno: TStringField;
QSelezioneDescrizione: TStringField;
QSelezioneArticoloetichetta: TStringField;
QSelezioneFornitore: TStringField;
QSelezioneArticolofornitore: TStringField;
QSelezioneTipoarticolo: TStringField;
QSelezioneCategoriamerceologica: TStringField;
QSelezioneMarca: TStringField;
QSelezioneQtainiziale: TFloatField;
QSelezioneQtacarico: TFloatField;
QSelezioneQtaScarico: TFloatField;
BatchMoveQcalcoli1: TBatchMove;
Destinazione2: TTable;
ProgressBar: TProgressBar;
DsSituazione: TDataSource;
QRaggruppa: TQuery;
TTSituazione: TTable;
BatchRaggruppa: TBatchMove;
Griglia: TDBGrid;
Series3: TBarSeries;
Series4: TBarSeries;
ValAcqL: TCheckBox;
ValAcqE: TCheckBox;
Label6: TLabel;
TTParamDadata: TDateField;
TTParamAdata: TDateField;
Raggruppamento: TDBRadioGroup;
TTParamRaggruppamento: TStringField;
Giacenza: TppReport;
ModGiacenza: TppDesigner;
ppGiacenza: TppBDEPipeline;
ppHeaderBand1: TppHeaderBand;
ppDetailBand1: TppDetailBand;
ppDBText1: TppDBText;
ppDBText2: TppDBText;
ppDBText3: TppDBText;
ppDBText4: TppDBText;
ppDBText5: TppDBText;
ppDBText6: TppDBText;
ppDBText7: TppDBText;
ppLabel1: TppLabel;
ppSystemVariable1: TppSystemVariable;
ppSystemVariable2: TppSystemVariable;
ppSummaryBand1: TppSummaryBand;
ppDBCalc1: TppDBCalc;
ppDBCalc2: TppDBCalc;
ppDBCalc3: TppDBCalc;
ppDBCalc4: TppDBCalc;
ppDBCalc5: TppDBCalc;
ppLabel2: TppLabel;
ppLabel3: TppLabel;
ppLabel4: TppLabel;
ppLabel5: TppLabel;
ppLabel6: TppLabel;
ppLabel7: TppLabel;
ppLabel8: TppLabel;
ppLabel9: TppLabel;
Valore_A_magazzino: TGroupBox;
Sommatoria: TDBSumList;
vLire: TEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Label7: TLabel;
Label8: TLabel;
vEuro: TEdit;
Aiuto: TAction;
TogliZeri: TCheckBox;
QCalcoli1Deposito: TStringField;
QCalcoli1Articolointerno: TStringField;
QCalcoli1Identificativo: TStringField;
QCalcoli1Descrizione: TStringField;
QCalcoli1Articoloetichetta: TStringField;
QCalcoli1Fornitore: TStringField;
QCalcoli1Articolofornitore: TStringField;
QCalcoli1Tipoarticolo: TStringField;
QCalcoli1Categoriamerceologica: TStringField;
QCalcoli1Marca: TStringField;
QCalcoli1Qtainiziale: TFloatField;
QCalcoli1Qtacarico: TFloatField;
QCalcoli1QtaScarico: TFloatField;
QCalcoli1PrezzoacquistoL: TCurrencyField;
QCalcoli1UC: TFloatField;
QCalcoli1PrezzoacquistoE: TCurrencyField;
QCalcoli1Listino: TStringField;
QCalcoli1Giacenza: TFloatField;
QCalcoli1Venduto: TFloatField;
QCalcoli1Rimanenza: TFloatField;
QCalcoli1VGiacAcqL: TFloatField;
QCalcoli1VGiacAcqE: TFloatField;
QCalcoli1ID: TFloatField;
QCalcoli1Descrittivo: TStringField;
Destinazione2Deposito: TStringField;
Destinazione2Articolointerno: TStringField;
Destinazione2Identificativo: TStringField;
Destinazione2Descrizione: TStringField;
Destinazione2Articoloetichetta: TStringField;
Destinazione2Fornitore: TStringField;
Destinazione2Articolofornitore: TStringField;
Destinazione2Tipoarticolo: TStringField;
Destinazione2Categoriamerceologica: TStringField;
Destinazione2Marca: TStringField;
Destinazione2Qtainiziale: TFloatField;
Destinazione2Qtacarico: TFloatField;
Destinazione2QtaScarico: TFloatField;
Destinazione2PrezzoacquistoL: TCurrencyField;
Destinazione2UC: TFloatField;
Destinazione2PrezzoacquistoE: TCurrencyField;
Destinazione2Listino: TStringField;
Destinazione2Giacenza: TFloatField;
Destinazione2Venduto: TFloatField;
Destinazione2Rimanenza: TFloatField;
Destinazione2VGiacAcqL: TFloatField;
Destinazione2VGiacAcqE: TFloatField;
Destinazione2ID: TFloatField;
Destinazione2Descrittivo: TStringField;
ListinoDB: TTable;
procedure QGiacenzaCalcFields(DataSet: TDataSet);
procedure cercatuttoExecute(Sender: TObject);
procedure AnagraficoExecute(Sender: TObject);
procedure modGiacenzaCustomSaveDoc(Sender: TObject);
procedure EseguiExecute(Sender: TObject);
procedure StampaExecute(Sender: TObject);
procedure ModificaExecute(Sender: TObject);
procedure ChiudiExecute(Sender: TObject);
procedure RimanenzaClick(Sender: TObject);
procedure VendutoClick(Sender: TObject);
procedure ValAcqLClick(Sender: TObject);
procedure ValAcqEClick(Sender: TObject);
procedure TabellaShow(Sender: TObject);
procedure TabellaHide(Sender: TObject);
procedure MostragraficoExecute(Sender: TObject);
procedure MostratabellaExecute(Sender: TObject);
procedure TTParamBeforeEdit(DataSet: TDataSet);
procedure TTParamFornitoreChange(Sender: TField);
procedure TTParamDepositoChange(Sender: TField);
procedure TTParamMarcaChange(Sender: TField);
procedure TTParamCategoriaChange(Sender: TField);
procedure TTParamMerceologiaChange(Sender: TField);
procedure SommatoriaSumListChanged(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure AiutoExecute(Sender: TObject);
private
{ Private declarations }
Function NomeDaRaggruppamento : string ;
public
{ Public declarations }
end;
var
Giacenza_form: TGiacenza_form;
id : integer ;
implementation
uses Ucerca, Umenu, ana_mod;
{$R *.DFM}
Function TGiacenza_form.NomeDaRaggruppamento : string ;
begin
// Compone il nome del record delle impostazioni globali in funzione del raggruppamento attivo
result := 'Layout giacenza '+ intToStr(Raggruppamento.Itemindex) ;
end ;
procedure TGiacenza_form.QGiacenzaCalcFields(DataSet: TDataSet);
begin
(* ini := QgiacenzaIniziale.asFloat ;
car := QgiacenzaCarico.asFLoat ;
scar := QgiacenzaScarico.asFloat ;
QGiacenzaQta.asFloat := ini+ car - scar ;
QGiacenzaindice.asFloat := (car / scar) * 100 ;*)
end;
procedure TGiacenza_form.cercatuttoExecute(Sender: TObject);
begin
Cerca_form.Trova(self) ;
end;
procedure TGiacenza_form.AnagraficoExecute(Sender: TObject);
begin
Case Raggruppamento.ItemIndex of
0 : begin
Menu_form.Apri_soggetti.Execute ;
ModuloDatiAnagrafiche.TTsoggetti.FindKey([TTSituazione['Identificativo']]) ;
end ;
1 : begin
//Deposito
Menu_form.Depositi.execute ;
ModuloDatiAnagrafiche.TTDepositi.FindKey([TTSituazione['Identificativo']]) ;
end ;
2 : begin
// Tipo articolo
Menu_form.Categorie_Articoli.Execute ;
ModuloDatiAnagrafiche.TTTipArt.FindKey([TTSituazione['Identificativo']]) ;
end ;
3 : begin
//Categoria Merceologica
Menu_form.Categorie_merceologiche.Execute ;
ModuloDatiAnagrafiche.TTCatMer.FindKey([TTSituazione['Identificativo']]) ;
end ;
4 : begin
//Marca
Menu_form.Marche.Execute ;
ModuloDatiAnagrafiche.TTMarche.FindKey([TTSituazione['Identificativo']]) ;
end ;
else
begin
// Articolo e Nessun Raggruppamento
Menu_form.Apri_articoli.Execute ;
ModuloDatiAnagrafiche.TTarticoli.FindKey([Destinazione2ArticoloInterno.asString]) ;
end ;
end ;
end;
procedure TGiacenza_form.modGiacenzaCustomSaveDoc(Sender: TObject);
Var
nn : string ;
begin
nn := NomeDaRaggruppamento ;
ModuloDatiAnagrafiche.ScriviChiave(nn,Giacenza.Template.Filename) ;
Giacenza.Template.SaveToFile ;
end;
procedure TGiacenza_form.EseguiExecute(Sender: TObject);
Var
identif : string ;
IdTab : TTable ;
ini,car,scar,Pezzi,venduto,rimanenza : double ;
Campo : Tfield ;
Pc,Uc : Real ;
Function LookUp(rag : integer; ident : string) : string ;
begin
// Ricerchiamo nell'anagrafica giusta la descrizione giusta
Case Rag of
0 : begin
// Fornitore
if ModuloDatiAnagrafiche.TTsoggetti.FindKey([ident])then
result := ModuloDatiAnagrafiche.TTsoggettiRagioneSociale.Value ;
end ;
1 : begin
// Deposito
If ModuloDatiAnagrafiche.TTDepositi.FindKey([ident]) then
result := ModuloDatiAnagrafiche.TTDepositiDenominazione.Value ;
end ;
2 : begin
// Categorie
result := ident ;
end ;
3 : begin
// Merceologia
result := ident ;
end ;
4 : begin
// Marca
result := ident ;
end ;
5 : begin
// Articolo e Nessun raggruppamento
If ModuloDatiAnagrafiche.TTArticoli.FindKey([ident]) then
result := ModuloDatiAnagrafiche.TTArticoliDescrizione.Value ;
end ;
6 : begin
// Articolo e Nessun raggruppamento
If ModuloDatiAnagrafiche.TTArticoli.Locate('Descrizione',ident,[]) then
result := ModuloDatiAnagrafiche.TTArticoliArticolo.AsString ;
end ;
end ;
end ;
Procedure Raggruppa(nomecampo : String) ;
begin
TTSituazione.Close;
Qraggruppa.Close ;
QRaggruppa.SQL[0] := 'SELECT DISTINCT d."'+nomecampo + '" as d.Identificativo,' ;
QRaggruppa.SQL[12] := 'GROUP BY d."'+nomecampo + '"' ;
QRaggruppa.SQL[13] := 'ORDER BY d."'+nomecampo + '"' ;
QRaggruppa.Open ;
BatchRaggruppa.Source := QRaggruppa ;
BatchRaggruppa.Execute ;
end ;
begin
if TTParam.State = DsEdit then TTParam.Post ;
TTSituazione.Close ;
// Fase 1 : Selezione articoli
Destinazione1.Close ;
Destinazione2.Close ;
Qselezione.Open ;
ProgressBar.Position := 1 ;
ProgressBar.Update ;
BatchMoveQselezione.Execute ;
ProgressBar.Position := 2 ;
ProgressBar.Update ;
Qselezione.Close ;
// Fase 2 : Calcoli su risultati selezione
id := 1 ;
QCalcoli1.Open ;
ProgressBar.Position := 3 ;
ProgressBar.Update ;
BatchMoveQcalcoli1.Execute ;
Qcalcoli1.Close ;
// Calcoliamo giacenza, rimanenza, venduto, ecc.
Destinazione2.Open ;
While Not Destinazione2.Eof do
begin
application.processmessages;
ini := Destinazione2Qtainiziale.Value ;
car := Destinazione2QtaCarico.Value ;
scar := Destinazione2Qtascarico.value ;
pezzi := ini + car - scar ;
If (ini + car) <> 0 then
begin
Rimanenza := pezzi/(ini + Car) * 100 ;
Venduto := (scar / (ini + car)) * 100 ;
end
else
begin
Rimanenza := 0 ;
if scar > 0 then
Venduto := 100
else
Venduto := 0 ;
end ;
pc := 0 ;
uc := destinazione2UC.Value ;
If ListinoDb.Findkey([Destinazione2Listino.asString,Destinazione2Articolointerno.asString]) then
Pc := ListinoDb.fieldByName('Pezzi per Confezione').asFloat ;
if pc = 0 then pc := 1 ;
if uc = 0 then uc := 1 ;
Destinazione2.Edit ;
Destinazione2Giacenza.Value := pezzi ;
Destinazione2Venduto.Value := Venduto ;
Destinazione2Rimanenza.Value := Rimanenza ;
Destinazione2PrezzoAcquistoL.Value := Destinazione2PrezzoacquistoL.value * Uc / Pc ;
Destinazione2PrezzoAcquistoE.Value := Destinazione2PrezzoAcquistoE.Value * Uc / Pc ;
Destinazione2VGiacAcqL.Value := Pezzi * Destinazione2PrezzoacquistoL.value ;
Destinazione2VGiacAcqE.Value := Pezzi * Destinazione2PrezzoAcquistoE.Value ;
Destinazione2.Post ;
Destinazione2.Next ;
end ;
// Fase 2bis : eliminiamo gli articoli a 0
if TogliZeri.Checked then
begin
Destinazione2.First ;
While Destinazione2.Locate('Giacenza',0,[]) do
Destinazione2.Delete ;
end ;
Destinazione2.Close ;
ProgressBar.Position := 4 ;
ProgressBar.Update ;
// Fase 3 : Se
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -