565 lines
17 KiB
C#
565 lines
17 KiB
C#
using SteamWare;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.Entity.Core.Objects;
|
|
using System.Data.Entity.Infrastructure;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web;
|
|
|
|
namespace MedAP_data
|
|
{
|
|
public class MedAPModel
|
|
{
|
|
/// <summary>
|
|
/// Gestione contesto dati
|
|
/// </summary>
|
|
static MAPEntities ctx = new MAPEntities();
|
|
|
|
|
|
#region funzioni Clienti
|
|
|
|
/// <summary>
|
|
/// elenco completo CLIENTI
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static IEnumerable<Clienti> Clienti()
|
|
{
|
|
return Clienti("", 0, 10);
|
|
}
|
|
/// <summary>
|
|
/// elenco filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<Clienti> Clienti(string searchMe, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<Clienti> query;
|
|
if (searchMe != "" && searchMe != null)
|
|
{
|
|
query = ctx.Clienti.Where(s => s.RagSoc.Contains(searchMe) || s.POBirth.Contains(searchMe) || s.Via.Contains(searchMe) || s.Località.Contains(searchMe) || s.Provincia.Contains(searchMe));
|
|
}
|
|
else
|
|
{
|
|
query = ctx.Clienti;
|
|
}
|
|
var result = from r in query.OrderBy(s => s.RagSoc).Skip(startRowIndex).Take(maximumRows) select r;
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// conteggio filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static int ClientiCount(string searchMe, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<Clienti> query;
|
|
if (searchMe != "" && searchMe != null)
|
|
{
|
|
query = ctx.Clienti.Where(s => s.RagSoc.Contains(searchMe) || s.POBirth.Contains(searchMe) || s.Via.Contains(searchMe) || s.Località.Contains(searchMe) || s.Provincia.Contains(searchMe));
|
|
}
|
|
else
|
|
{
|
|
query = ctx.Clienti;
|
|
}
|
|
return query.Count();
|
|
}
|
|
/// <summary>
|
|
/// Restituisce cliente specifico
|
|
/// </summary>
|
|
/// <param name="idxCli"></param>
|
|
/// <returns></returns>
|
|
public static Clienti ClienteSel(int idxCli)
|
|
{
|
|
IQueryable<Clienti> query;
|
|
query = ctx.Clienti.Where(s => s.idxCli == idxCli);
|
|
var result = from r in query select r;
|
|
return result.FirstOrDefault();
|
|
}
|
|
/// <summary>
|
|
/// Add record CLIENTI
|
|
/// </summary>
|
|
/// <param name="rigaCli"></param>
|
|
public static void ClientiInsert(Clienti rigaCli)
|
|
{
|
|
// imposto parametri opzionali...
|
|
rigaCli.Pagamento = "";
|
|
rigaCli.idxGruppo = "";
|
|
ctx.Clienti.Add(rigaCli);
|
|
ctx.SaveChanges();
|
|
}
|
|
/// <summary>
|
|
/// Update record CLIENTI
|
|
/// </summary>
|
|
/// <param name="rigaCli"></param>
|
|
public static void ClientiUpdate(Clienti rigaCli)
|
|
{
|
|
rigaCli.Pagamento = "";
|
|
rigaCli.idxGruppo = "";
|
|
ctx.stp_clienti_update(rigaCli.idxCli, rigaCli.RagSoc, rigaCli.Sesso, rigaCli.POBirth, rigaCli.DOBirth, rigaCli.P_iva, rigaCli.C_Fisc, rigaCli.Via, rigaCli.Località, rigaCli.Cap, rigaCli.Provincia, rigaCli.Pagamento, rigaCli.email, rigaCli.tel, rigaCli.Note, rigaCli.idxGruppo);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Clienti);
|
|
}
|
|
/// <summary>
|
|
/// Delete record CLIENTI
|
|
/// </summary>
|
|
/// <param name="rigaCli"></param>
|
|
public static void ClientiDelete(Clienti rigaCli)
|
|
{
|
|
ctx.stp_clienti_delete(rigaCli.idxCli);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Clienti);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region funzioni Documenti
|
|
|
|
/// <summary>
|
|
/// elenco completo DOCUMENTI
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static IEnumerable<Documenti> Documenti()
|
|
{
|
|
return Documenti("", 0, 10);
|
|
}
|
|
/// <summary>
|
|
/// elenco filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<Documenti> Documenti(string searchMe, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<Documenti> query;
|
|
if (searchMe != "" && searchMe != null)
|
|
{
|
|
query = ctx.Documenti.Where(s => s.RagSoc.Contains(searchMe) || s.Descrizione.Contains(searchMe));
|
|
}
|
|
else
|
|
{
|
|
query = ctx.Documenti;
|
|
}
|
|
var result = from r in query.OrderBy(s => s.RagSoc).Skip(startRowIndex).Take(maximumRows) select r;
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// conteggio filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static int DocumentiCount(string searchMe, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<Documenti> query;
|
|
if (searchMe != "" && searchMe != null)
|
|
{
|
|
query = ctx.Documenti.Where(s => s.RagSoc.Contains(searchMe) || s.Descrizione.Contains(searchMe));
|
|
}
|
|
else
|
|
{
|
|
query = ctx.Documenti;
|
|
}
|
|
return query.Count();
|
|
}
|
|
/// <summary>
|
|
/// elenco filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="idxCli"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<Documenti> DocumentiFilt(int idxCli, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<Documenti> query;
|
|
if (idxCli > 0)
|
|
{
|
|
query = ctx.Documenti.Where(s => s.idxCli == idxCli);
|
|
}
|
|
else
|
|
{
|
|
query = ctx.Documenti;
|
|
}
|
|
var result = from r in query.OrderByDescending(s => s.anno).ThenByDescending(s => s.num).Skip(startRowIndex).Take(maximumRows) select r;
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// elenco filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="idxCli"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static int DocumentiFiltCount(int idxCli, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<Documenti> query;
|
|
if (idxCli > 0)
|
|
{
|
|
query = ctx.Documenti.Where(s => s.idxCli == idxCli);
|
|
}
|
|
else
|
|
{
|
|
query = ctx.Documenti;
|
|
}
|
|
return query.Count();
|
|
}
|
|
/// <summary>
|
|
/// Restituisce DOCUMENTO specifico
|
|
/// </summary>
|
|
/// <param name="idxDoc"></param>
|
|
/// <returns></returns>
|
|
public static Documenti DocumentoSel(int idxDoc)
|
|
{
|
|
IQueryable<Documenti> query;
|
|
query = ctx.Documenti.Where(s => s.idxDoc == idxDoc);
|
|
var result = from r in query select r;
|
|
return result.FirstOrDefault();
|
|
}
|
|
/// <summary>
|
|
/// Add record DOCUMENTO
|
|
/// </summary>
|
|
/// <param name="rigaDoc"></param>
|
|
public static void DocumentiInsert(Documenti rigaDoc)
|
|
{
|
|
// imposto parametri opzionali...
|
|
//rigaDoc.Pagamento = "";
|
|
//rigaDoc.idxGruppo = "";
|
|
//ctx.Documenti.Add(rigaDoc);
|
|
ctx.stp_docs_insert(rigaDoc.anno, rigaDoc.num, rigaDoc.idxCli, rigaDoc.tipo, rigaDoc.emesso, rigaDoc.ritenuta);
|
|
ctx.SaveChanges();
|
|
}
|
|
/// <summary>
|
|
/// Update record DOCUMENTO
|
|
/// </summary>
|
|
/// <param name="rigaDoc"></param>
|
|
public static void DocumentiUpdate(Documenti rigaDoc)
|
|
{
|
|
//rigaDoc.Pagamento = "";
|
|
//rigaDoc.idxGruppo = "";
|
|
ctx.stp_docs_update(rigaDoc.idxDoc, rigaDoc.anno, rigaDoc.num, rigaDoc.idxCli, rigaDoc.tipo, rigaDoc.emesso, rigaDoc.ritenuta);
|
|
ctx.SaveChanges();
|
|
try
|
|
{
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
logger.lg.scriviLog(exc.ToString(), tipoLog.EXCEPTION);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Delete record DOCUMENTO
|
|
/// </summary>
|
|
/// <param name="rigaDoc"></param>
|
|
public static void DocumentiDelete(Documenti rigaDoc)
|
|
{
|
|
ctx.stp_docs_delete(rigaDoc.idxDoc);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
|
|
}
|
|
/// <summary>
|
|
/// Delete record DOCUMENTO da chiave
|
|
/// </summary>
|
|
/// <param name="rigaDoc"></param>
|
|
public static void DocumentiDelete(int idxDoc)
|
|
{
|
|
ctx.stp_docs_delete(idxDoc);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
|
|
}
|
|
/// <summary>
|
|
/// CLONA record DOCUMENTO da chiave con primo IDX libero
|
|
/// </summary>
|
|
/// <param name="rigaDoc"></param>
|
|
public static void DocumentiClona(int idxDoc)
|
|
{
|
|
ctx.stp_docs_clone(idxDoc);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
|
|
}
|
|
/// <summary>
|
|
/// CLONA record DOCUMENTO da chiave con primo IDX libero per un CLIENTE specificato
|
|
/// </summary>
|
|
/// <param name="rigaDoc"></param>
|
|
/// <param name="idxCli"></param>
|
|
public static void DocumentiClona(int idxDoc, int idxCli)
|
|
{
|
|
ctx.stp_docs_cloneTemplate(idxDoc, idxCli);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region funzioni RigheDoc
|
|
|
|
/// <summary>
|
|
/// elenco completo RIGHE FATTURE
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static IEnumerable<RigheDoc> RigheDoc()
|
|
{
|
|
return RigheDoc(0);
|
|
}
|
|
/// <summary>
|
|
/// elenco filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<RigheDoc> RigheDoc(int idxFatt)
|
|
{
|
|
IQueryable<RigheDoc> query;
|
|
if (idxFatt > 0)
|
|
{
|
|
query = ctx.RigheDoc.Where(s => s.IdxFatt == idxFatt);
|
|
}
|
|
else
|
|
{
|
|
query = ctx.RigheDoc;
|
|
}
|
|
var result = from r in query.OrderBy(s => s.IdxRigheFatt) select r;
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// conteggio filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static int RigheDocCount(int idxFatt)
|
|
{
|
|
IQueryable<RigheDoc> query;
|
|
if (idxFatt > 0)
|
|
{
|
|
query = ctx.RigheDoc.Where(s => s.IdxFatt == idxFatt);
|
|
}
|
|
else
|
|
{
|
|
query = ctx.RigheDoc;
|
|
}
|
|
return query.Count();
|
|
}
|
|
/// <summary>
|
|
/// Add record RIGHE FATTURE
|
|
/// </summary>
|
|
/// <param name="rigaFatt"></param>
|
|
public static void RigheDocInsert(RigheDoc rigaFatt)
|
|
{
|
|
ctx.stp_docRows_addNew(rigaFatt.idxDoc, rigaFatt.Descrizione, rigaFatt.um, rigaFatt.prezzoUm, rigaFatt.qta, rigaFatt.c_iva);
|
|
ctx.SaveChanges();
|
|
}
|
|
/// <summary>
|
|
/// Add record RIGHE FATTURE clonando su nuovo doc una riga esistente
|
|
/// </summary>
|
|
/// <param name="idxDoc"></param>
|
|
public static void RigheDocCopy2Doc(int idxDoc, int idxRigaFatt)
|
|
{
|
|
ctx.stp_docRows_copy2doc(idxDoc, idxRigaFatt);
|
|
ctx.SaveChanges();
|
|
}
|
|
/// <summary>
|
|
/// Update record RIGHE FATTURE
|
|
/// </summary>
|
|
/// <param name="rigaFatt"></param>
|
|
public static void RigheDocUpdate(RigheDoc rigaFatt)
|
|
{
|
|
ctx.stp_docRows_updateQuery(rigaFatt.IdxRigheFatt, rigaFatt.Descrizione, rigaFatt.um, rigaFatt.prezzoUm, rigaFatt.qta, rigaFatt.sconto, rigaFatt.c_iva);
|
|
ctx.SaveChanges();
|
|
try
|
|
{
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.RigheDoc);
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
logger.lg.scriviLog(exc.ToString(), tipoLog.EXCEPTION);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Delete record RIGHE FATTURE
|
|
/// </summary>
|
|
/// <param name="rigaFatt"></param>
|
|
public static void RigheDocDelete(RigheDoc rigaFatt)
|
|
{
|
|
ctx.stp_docRows_deleteQuery(rigaFatt.IdxRigheFatt);
|
|
ctx.SaveChanges();
|
|
try
|
|
{
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.RigheDoc);
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
logger.lg.scriviLog(exc.ToString(), tipoLog.EXCEPTION);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region funzioni TEMPLATE
|
|
|
|
/// <summary>
|
|
/// elenco completo
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static IEnumerable<DocTemplate> ElencoDocTemplate()
|
|
{
|
|
var result = from r in ctx.DocTemplate.OrderBy(s => s.Descrizione) select r;
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// elenco completo
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static IEnumerable<RowTemplate> ElencoRowTemplate()
|
|
{
|
|
var result = from r in ctx.RowTemplate.OrderBy(s => s.Descrizione) select r;
|
|
return result;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region funzioni RigheDoc
|
|
|
|
/// <summary>
|
|
/// elenco completo RIGHE FATTURE
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static IEnumerable<ResocontoIvaFatt> ResocontoIva()
|
|
{
|
|
return ResocontoIva(0);
|
|
}
|
|
/// <summary>
|
|
/// elenco filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="idxDoc"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<ResocontoIvaFatt> ResocontoIva(int idxDoc)
|
|
{
|
|
IQueryable<ResocontoIvaFatt> query;
|
|
if (idxDoc > 0)
|
|
{
|
|
query = ctx.ResocontoIvaFatt.Where(s => s.Idxfatt == idxDoc);
|
|
}
|
|
else
|
|
{
|
|
query = ctx.ResocontoIvaFatt;
|
|
}
|
|
var result = from r in query.OrderBy(s => s.RN) select r;
|
|
return result;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region VAT
|
|
|
|
|
|
/// <summary>
|
|
/// elenco completo VAT
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static IEnumerable<VAT> Vat()
|
|
{
|
|
return Vat("", 0, 10);
|
|
}
|
|
/// <summary>
|
|
/// elenco filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable<VAT> Vat(string searchMe, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<VAT> query;
|
|
if (searchMe != "" && searchMe != "*" && searchMe != null)
|
|
{
|
|
query = ctx.VAT.Where(s => s.descrizione.Contains(searchMe));
|
|
}
|
|
else
|
|
{
|
|
query = ctx.VAT;
|
|
}
|
|
var result = from r in query.OrderByDescending(s => s.enabled).OrderBy(s => s.iva).OrderBy(s => s.descrizione).Skip(startRowIndex).Take(maximumRows) select r;
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// conteggio filtrato da parametro ricerca
|
|
/// </summary>
|
|
/// <param name="searchMe"></param>
|
|
/// <param name="startRowIndex"></param>
|
|
/// <param name="maximumRows"></param>
|
|
/// <returns></returns>
|
|
public static int VatCount(string searchMe, int startRowIndex, int maximumRows)
|
|
{
|
|
IQueryable<VAT> query;
|
|
if (searchMe != "" && searchMe != null)
|
|
{
|
|
query = ctx.VAT.Where(s => s.descrizione.Contains(searchMe));
|
|
}
|
|
else
|
|
{
|
|
query = ctx.VAT;
|
|
}
|
|
return query.Count();
|
|
}
|
|
/// <summary>
|
|
/// Restituisce cliente specifico
|
|
/// </summary>
|
|
/// <param name="C_iva"></param>
|
|
/// <returns></returns>
|
|
public static VAT VatSel(int C_iva)
|
|
{
|
|
IQueryable<VAT> query;
|
|
query = ctx.VAT.Where(s => s.C_iva == C_iva);
|
|
var result = from r in query select r;
|
|
return result.FirstOrDefault();
|
|
}
|
|
/// <summary>
|
|
/// Add record CLIENTI
|
|
/// </summary>
|
|
/// <param name="rigaVAT"></param>
|
|
public static void VatInsert(VAT rigaVAT)
|
|
{
|
|
// imposto parametri opzionali...
|
|
ctx.VAT.Add(rigaVAT);
|
|
ctx.SaveChanges();
|
|
}
|
|
/// <summary>
|
|
/// Update record CLIENTI
|
|
/// </summary>
|
|
/// <param name="rigaVAT"></param>
|
|
public static void VatUpdate(VAT rigaVAT)
|
|
{
|
|
ctx.stp_VAT_updateQuery(rigaVAT.C_iva, rigaVAT.iva, rigaVAT.descrizione, rigaVAT.enabled, rigaVAT.splitPay);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.VAT);
|
|
}
|
|
/// <summary>
|
|
/// Delete record CLIENTI
|
|
/// </summary>
|
|
/// <param name="rigaVAT"></param>
|
|
public static void VatDelete(VAT rigaVAT)
|
|
{
|
|
ctx.stp_VAT_deleteQuery(rigaVAT.C_iva);
|
|
// refresh EF context
|
|
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.VAT);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|