Rimappatura di consegne dopo master/detail.

Filtro destinazioni per esporre un giro alla volta
This commit is contained in:
Marco Audiffredi 2024-07-29 16:17:50 +02:00
parent 86d7c6349e
commit 8ab01eb1bd
4 changed files with 184 additions and 91 deletions

View File

@ -36,7 +36,7 @@ namespace ApiSoftway.Controllers
private DbSet<GiriConsegna>? _giriCons; private DbSet<GiriConsegna>? _giriCons;
private DbSet<GiriConsegnaView>? _giriConsView; private DbSet<GiriConsegnaView>? _giriConsView;
private DbSet<Destinazioni>? _destinazioni; private DbSet<Destinazioni>? _destinazioni;
private DbSet<Consegna>? _consegne; private DbSet<ConsegnaTable>? _consegne;
private DbSet<Sbr_ord>? _sbrord; private DbSet<Sbr_ord>? _sbrord;
private DbSet<Personale>? _personale; private DbSet<Personale>? _personale;
private DbSet<Automezzi>? _automezzi; private DbSet<Automezzi>? _automezzi;
@ -431,9 +431,23 @@ namespace ApiSoftway.Controllers
List<Destinazioni_out> lst = new List<Destinazioni_out>(); List<Destinazioni_out> lst = new List<Destinazioni_out>();
_destinazioni = _destinazioni_context.Destinazioni; _destinazioni = _destinazioni_context.Destinazioni;
var r = await _destinazioni.Where(t => t.CodAutista != null && t.CodAutista.Equals(usr) && t.DataCarico != null && t.DataCarico == data var r = await _destinazioni.Where(t => t.CodAutista != null && t.CodAutista.Equals(usr) && t.DataCarico != null && t.DataCarico == data
//&& !string.IsNullOrEmpty(t.serialeGiro) && !string.IsNullOrEmpty(t.serialeGiro)
).OrderByDescending(t => t.DataCarico).ToListAsync(); ).OrderBy(t => t.serialeGiro).ToListAsync();
//2024-07-29: se un autista ha due o più giri da fare nello stesso giorno li devo separare. li ho ordinati per seriale giro e gli do quelli del primo
// giro disponibile che non sia chiuso (PIDATCHI di GESAPIGIRCON deve essere nulla)
int giro = 0;
string seriale_attuale = string.Empty;
foreach (Destinazioni d in r) foreach (Destinazioni d in r)
{
if(giro==0)
{
seriale_attuale = d.serialeGiro;
}
giro++;
if(d.serialeGiro.Equals(seriale_attuale))
{ {
Destinazioni_out o = new Destinazioni_out(); Destinazioni_out o = new Destinazioni_out();
string _aut= !string.IsNullOrEmpty(d.Autista) ? d.Autista.Trim() : string.Empty; string _aut= !string.IsNullOrEmpty(d.Autista) ? d.Autista.Trim() : string.Empty;
@ -500,6 +514,7 @@ namespace ApiSoftway.Controllers
lst.Add(o); lst.Add(o);
} }
}
return lst; return lst;
} }
@ -668,13 +683,13 @@ namespace ApiSoftway.Controllers
string usr = getClaimValueByToken(token, "codice"); string usr = getClaimValueByToken(token, "codice");
try try
{ {
ConsegnaTable ct = fillConsegna(model, token,DateTime.Now);
//string tecnico = getClaimValueByToken(token, "tccodice"); //string tecnico = getClaimValueByToken(token, "tccodice");
if (await checkConsegnaPresente(token, model) == 0) if (await checkConsegnaPresente(token, ct) == 0)
{ {
DateTime dateTime = DateTime.Now; DateTime dateTime = DateTime.Now;
Consegna t = fillConsegna(model, token, dateTime); ConsegnaTable t = fillConsegna(model, token, dateTime);
//Step 1: mi calcolo il nuovo seriale //Step 1: mi calcolo il nuovo seriale
_consegne = _consegne_context.Cons; _consegne = _consegne_context.Cons;
@ -693,10 +708,12 @@ namespace ApiSoftway.Controllers
var ti = await _sbrord.Where(t => t.Brserial.Equals(model.Serial)).FirstAsync(); var ti = await _sbrord.Where(t => t.Brserial.Equals(model.Serial)).FirstAsync();
string _committente = ti.Brcodcom; string _committente = ti.Brcodcom;
string _cliFatturazione = ti.Brclifat; string _cliFatturazione = ti.Brclifat;
int seque = ti.Brnumseq.Value;
t.Cca = _committente; t.Cca = _committente;
t.Ccda=_cliFatturazione; t.Ccda=_cliFatturazione;
t.Tcda = "C"; t.Cprownum = seque;
t.Tca = "C";
//Step 3 : testata //Step 3 : testata
Consegna_m m = new Consegna_m(); Consegna_m m = new Consegna_m();
@ -749,10 +766,49 @@ namespace ApiSoftway.Controllers
try try
{ {
ConsegnaTable ct = fillConsegna(model, token, DateTime.Now);
//string tecnico = getClaimValueByToken(token, "tccodice"); //string tecnico = getClaimValueByToken(token, "tccodice");
if (await checkConsegnaPresente(token, model) == 0) if (await checkConsegnaPresente(token, ct) == 0)
{ {
Consegna t = fillConsegnaNonEffettuata(model, token); DateTime dateTime = DateTime.Now;
ConsegnaTable t = fillConsegnaNonEffettuata(model, token);
//Step 1: mi calcolo il nuovo seriale
_consegne = _consegne_context.Cons;
var ser = await _consegne.Take(1).OrderByDescending(t => t.Pisergir).ToListAsync();
string ultSer = "0";
if (ser != null && ser.Count > 0)
{
ultSer = ser.First().Pisergir;
}
string newSer = calcolaNuovoSeriale(ultSer);
t.Pisergir = newSer;
//Steo 2: mi ricavo i dati da inserire i GESASMOVIB. Li leggo dalla GESASBR_ORD
_sbrord = _sbrord_context.Cons;
var ti = await _sbrord.Where(t => t.Brserial.Equals(model.Serial)).FirstAsync();
string _committente = ti.Brcodcom;
string _cliFatturazione = ti.Brclifat;
int seque = ti.Brnumseq.Value;
t.Cca = _committente;
t.Ccda = _cliFatturazione;
t.Cprownum = seque;
//Step 3 : testata
Consegna_m m = new Consegna_m();
m.Pisergir = t.Pisergir;
m.Data = dateTime;
m.Cpccchk = getCpccchk(10);
using (var transactionM = _consegne_m_context.Database.BeginTransaction())
{
await _consegne_m_context.Cons.AddAsync(m);
await _consegne_m_context.SaveChangesAsync();
transactionM.Commit();
}
//step 4 : riga (è sempre e solo una)
using (var transaction = _consegne_context.Database.BeginTransaction()) using (var transaction = _consegne_context.Database.BeginTransaction())
{ {
await _consegne_context.Cons.AddAsync(t); await _consegne_context.Cons.AddAsync(t);
@ -782,7 +838,7 @@ namespace ApiSoftway.Controllers
} }
private async Task<int> checkConsegnaPresente(string token, Consegna model) private async Task<int> checkConsegnaPresente(string token, ConsegnaTable model)
{ {
int trovati = 0; int trovati = 0;
_consegne = _consegne_context.Cons; _consegne = _consegne_context.Cons;
@ -884,9 +940,9 @@ namespace ApiSoftway.Controllers
return item; return item;
} }
private Consegna fillConsegna(Consegna i, string token, DateTime d) private ConsegnaTable fillConsegna(Consegna i, string token, DateTime d)
{ {
Consegna r = new Consegna(); ConsegnaTable r = new ConsegnaTable();
string usr = getClaimValueByToken(token, "codice"); string usr = getClaimValueByToken(token, "codice");
@ -894,7 +950,7 @@ namespace ApiSoftway.Controllers
r.Cprownum = i.Cprownum; r.Cprownum = i.Cprownum;
r.Cprownum=i.Cprownum; r.Cprownum=i.Cprownum;
r.Ccddd = i.Ccddd; r.Ccddd = i.Ccddd;
r.cpccchk = i.cpccchk; r.cpccchk = getCpccchk(10);
r.Ccda = i.Ccda; r.Ccda = i.Ccda;
r.Dcda = i.Dcda; r.Dcda = i.Dcda;
r.Pinotban = i.Pinotban; r.Pinotban = i.Pinotban;
@ -913,8 +969,8 @@ namespace ApiSoftway.Controllers
r.Tipob2 = i.Tipob2; r.Tipob2 = i.Tipob2;
r.Tipob =i.Tipob; r.Tipob =i.Tipob;
r.Sdoc = i.Sdoc; r.Sdoc = i.Sdoc;
r.Pisergir = i.Pisergir; r.Pisergir = i.Serial;
r.Tcda=i.Tcda; r.Tcda="S";
r.Tca = i.Tca; r.Tca = i.Tca;
r.Cca = i.Cca; r.Cca = i.Cca;
r.Dca = i.Dca; r.Dca = i.Dca;
@ -927,16 +983,16 @@ namespace ApiSoftway.Controllers
return r; return r;
} }
private Consegna fillConsegnaNonEffettuata(Consegna i, string token) private ConsegnaTable fillConsegnaNonEffettuata(Consegna i, string token)
{ {
Consegna r = new Consegna(); ConsegnaTable r = new ConsegnaTable();
string usr = getClaimValueByToken(token, "codice"); string usr = getClaimValueByToken(token, "codice");
r.Piautist = usr; r.Piautist = usr;
r.Cprownum = i.Cprownum; r.Cprownum = i.Cprownum;
r.Ccddd = i.Ccddd; r.Ccddd = i.Ccddd;
r.cpccchk = i.cpccchk; r.cpccchk = getCpccchk(10);
r.Ccda = i.Ccda; r.Ccda = i.Ccda;
r.Dcda = i.Dcda; r.Dcda = i.Dcda;
r.Pinotban = i.Pinotban; r.Pinotban = i.Pinotban;
@ -955,7 +1011,7 @@ namespace ApiSoftway.Controllers
r.Tipob2 = i.Tipob2; r.Tipob2 = i.Tipob2;
r.Tipob = i.Tipob; r.Tipob = i.Tipob;
r.Sdoc = i.Sdoc; r.Sdoc = i.Sdoc;
r.Pisergir = i.Pisergir; r.Pisergir = i.Serial;
//r.Tcda=i.Tcda; //r.Tcda=i.Tcda;
r.Tcda = "N"; r.Tcda = "N";
r.Tca = i.Tca; r.Tca = i.Tca;
@ -964,6 +1020,7 @@ namespace ApiSoftway.Controllers
r.Piconseg = i.Piconseg; r.Piconseg = i.Piconseg;
r.Pimezzo = i.Pimezzo; r.Pimezzo = i.Pimezzo;
r.Piimport = i.Piimport; r.Piimport = i.Piimport;
r.Serial=i.Serial;
@ -998,7 +1055,7 @@ namespace ApiSoftway.Controllers
r.Tipob2 = i.Tipob2; r.Tipob2 = i.Tipob2;
r.Tipob = i.Tipob; r.Tipob = i.Tipob;
r.Sdoc = i.Sdoc; r.Sdoc = i.Sdoc;
r.Pisergir = i.Pisergir; r.Pisergir = i.Serial;
r.Tcda = i.Tcda; r.Tcda = i.Tcda;
r.Tca = i.Tca; r.Tca = i.Tca;
r.Cca = i.Cca; r.Cca = i.Cca;

View File

@ -4,10 +4,8 @@ namespace ApiSoftway.Models
{ {
public class Consegna public class Consegna
{ {
[Key] //versione iniziale
public string? Pisergir { get; set; } public string? Serial { get; set; }
[Key]
public int? Cprownum { get; set; } public int? Cprownum { get; set; }
public string? Tcda { get; set; } public string? Tcda { get; set; }
public string? Ccda { get; set; } public string? Ccda { get; set; }
@ -35,7 +33,5 @@ namespace ApiSoftway.Models
public decimal? Piimport { get; set; } public decimal? Piimport { get; set; }
public string? Pinotimp { get; set; } public string? Pinotimp { get; set; }
public string? Pinotban { get; set; } public string? Pinotban { get; set; }
public string? Serial { get; set; }
} }
} }

40
Models/ConsegnaTable.cs Normal file
View File

@ -0,0 +1,40 @@
using System.ComponentModel.DataAnnotations;
namespace ApiSoftway.Models
{
public class ConsegnaTable
{
[Key]
public string? Pisergir { get; set; }
[Key]
public int? Cprownum { get; set; }
public string? Tcda { get; set; }
public string? Ccda { get; set; }
public string? Dcda { get; set; }
public string? Tca { get; set; }
public string? Cca { get; set; }
public string? Dca { get; set; }
public string? Tipob { get; set; }
public int? Nbanc { get; set; }
public string? Descb { get; set; }
public string? Tipob1 { get; set; }
public string? Tipob2 { get; set; }
public string? Ccddd { get; set; }
public string? Ccadd { get; set; }
public string? Ndoc { get; set; }
public string? Sdoc { get; set; }
public DateTime? Datdoc { get; set; }
public string? cpccchk { get; set; }
public string? Piconseg { get; set; }
public string? Pimezzo { get; set; }
public string? Piautist { get; set; }
public int? Pibansca { get; set; }
[System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "decimal(18, 5)")]
public decimal? Piimport { get; set; }
public string? Pinotimp { get; set; }
public string? Pinotban { get; set; }
public string? Serial { get; set; }
}
}

View File

@ -5,7 +5,7 @@ namespace ApiSoftway.Models.Gesa_DbContext
public class GESA_CONSEGNE_DbContext : DbContext public class GESA_CONSEGNE_DbContext : DbContext
{ {
/// <summary></summary> /// <summary></summary>
public DbSet<Consegna>? Cons { get; set; } public DbSet<ConsegnaTable>? Cons { get; set; }
/// <summary></summary> /// <summary></summary>
public GESA_CONSEGNE_DbContext(DbContextOptions<GESA_CONSEGNE_DbContext> options) : base(options) public GESA_CONSEGNE_DbContext(DbContextOptions<GESA_CONSEGNE_DbContext> options) : base(options)
@ -15,8 +15,8 @@ namespace ApiSoftway.Models.Gesa_DbContext
/// <summary></summary> /// <summary></summary>
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder.Entity<Consegna>().ToTable("GESASMOVIB"); modelBuilder.Entity<ConsegnaTable>().ToTable("GESASMOVIB");
modelBuilder.Entity<Consegna>().HasKey(table => new { modelBuilder.Entity<ConsegnaTable>().HasKey(table => new {
table.Pisergir, table.Pisergir,
table.Cprownum table.Cprownum
}); });