Files
ayanova7/source/bizobjects/AyaLib/GZTW.AyaNova.BLL/DBManager.cs
2020-04-02 22:13:29 +00:00

7903 lines
395 KiB
C#
Raw Blame History

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
using CSLA;
using CSLA.Data;
using CSLA.Security;
using GZTW.Data;
namespace GZTW.AyaNova.BLL
{
#pragma warning disable 1591
/// <summary>
/// Various Database management utilities
/// </summary>
[Serializable]
public class DBManager
{
#region constructor
static DBManager()
{ }
#endregion
#region Methods
/// <summary>
/// Erases all optional data in the database
/// except for required elements
/// </summary>
/// <returns></returns>
public static void EraseDatabase(string SafetyKey)
{
if (!User.IsAdmin && !AyaBizUtils.Lite)//case 1172
throw new System.Security.SecurityException(
LocalizedTextTable.GetLocalizedTextDirect("Error.Security.AdministratorOnlyMessage")
);
if (SafetyKey == null || SafetyKey != "I_UNDERSTAND_ALL_DATA_WILL_BE_ERASED_AND_I_ACCEPT_RESPONSIBILITY")
{
throw new System.Security.SecurityException(
"Invalid safety key!\r\n" +
"A safety key is required to avoid accidentally deleting data through a non AyaNova program.\r\n" +
"If you are certain you need to do this, contact support@ayanova.com for the safety key to use.");
}
//Ok presumably it's ok to erase the data at this point
Eraser.EraseEverything();
}
/// <summary>
/// Advance reference dates
/// Used to move dates in trial data to be centered on current date
/// so that people evaluating AyaNova can see scheduled users
/// and workorders centered around the current date instead of being
/// stuck in the past when they were first created
///
/// Do not use under any circumstances with actual live data,
/// it will wreak havoc on a production database, the trial data
/// is designed to work with this method.
/// </summary>
/// <param name="ReferenceDate"></param>
internal static void AdvanceTrialDataDates(System.DateTime ReferenceDate)
{
EvalAdvance.Advance(ReferenceDate);
}
/// <summary>
/// Upgrades schema to current version required
/// </summary>
internal static void UpdateSchema()
{
Schemalizer.UpdateSchema();
}
/// <summary>
/// Unschedules all users in all workorders
/// </summary>
internal static void UnscheduleUsers()
{
UnscheduleAllUsers.Unschedule();
}
/// <summary>
/// Change all users in all workorders to lite user
/// </summary>
internal static void UnscheduleUsersToLite()
{
UnscheduleAllUsersToLite.UnscheduleToLite();
}
/// <summary>
/// Recompute index statistics for all Indexes in a FireBird database
/// (This is run on every schema update when a new AyaNova is released.)
/// Firebird does not automatically recompute statistics as Microsoft SQL server does
/// so over time indexes may become stale and not reflect the current data.
///
/// Note indexes are also recomputed on a backup and restore in FireBird server version.
/// </summary>
public static void FireBirdRecomputeStatistics()
{
if (DBUtil.DB.DBType != DataBaseType.FireBird) return;
FBRecomputeStats.Recompute();
}
#endregion
#region Eraser
/// <summary>
/// Erase an entire database
/// </summary>
[Serializable, System.ComponentModel.Browsable(false)]
public class Eraser//DO_NOT_OBFUSCATE
{
public Eraser()
{
}
public static void EraseEverything()
{
DataPortal.Update(new Eraser());
}
public void DataPortal_Update()
{
DBCommandWrapper cm = null;
//Case 672
DeleteTable("AUSERMRU");
//delete all but global address
cm = DBUtil.GetCommandFromSQL("DELETE FROM AADDRESS WHERE aRootObjectID <> @ID");
cm.AddInParameter("@ID", DbType.Guid, Address.GlobalAddressID);
DBUtil.DB.ExecuteNonQuery(cm);
DeleteTable("AASSIGNEDDOC");
DeleteTable("aClientNote");
DeleteTable("aClientNoteType");
try
{
DeleteTable("aClientServiceRequest");
}
catch { }
DeleteTable("aContactPhone");
DeleteTable("aContact");
//this one should maybe stay
DeleteTable("aContactTitle");
DeleteTable("aContractRate");
DeleteTable("aMemo");
DeleteTable("aNotifyDeliveryLog");
DeleteTable("aNotifySubscriptionDelivery");
DeleteTable("aNotifyDeliverySetting");
DeleteTable("aNotifyEvent");
DeleteTable("aNotifyEventOfInterest");
DeleteTable("aNotifyPopup");
DeleteTable("aNotifySubscriber");
DeleteTable("aNotifySubscription");
DeleteTable("aPartByWarehouseInventory");
DeleteTable("aUnitMeterReading");
DeleteTable("aWorkorderItemLabor");
//WorkorderItemLoan - Remove the reference in LoanItem first:
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aLoanItem SET aCurrentWorkorderItemLoan=null");
DeleteTable("aWorkorderItemLoan");
DeleteTable("aLoanItem");
DeleteTable("aWorkorderItemMiscExpense");
DeleteTable("aWorkorderItemOutsideService");
//WorkorderItemPart - Remove the reference in PartSerial first:
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aPartSerial SET aWorkorderItemPartID=null");
DeleteTable("aWorkorderItemPart");
DeleteTable("aPartSerial");
//WorkorderItemPartRequest - Remove the reference in purchaseorderitem first:
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aPurchaseOrderItem SET aWorkorderItemPartRequestID=null");
DeleteTable("aWorkorderItemPartRequest");
DeleteTable("aWorkorderItemScheduledUser");
DeleteTable("aWorkorderItemTask");
DeleteTable("aWorkorderItemTravel");
DeleteTable("aWorkorderItem");
DeleteTable("aWorkorderService");
//WorkorderQuote and PM - Remove the reference in Workorder first:
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aWorkorder SET aFromQuoteID=null, aFromPMID=null ");
DeleteTable("aWorkorderQuote");
DeleteTable("aWorkorderPreventiveMaintenance");
//Workorder- Remove the reference in client and unit first:
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aClient SET aLastWorkorderID=null");
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aUnit SET aLastWorkorderID=null");
//Case 690 - remove template ref in client
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aClient SET ADEFAULTSERVICETEMPLATEID=null");
//Case 691 - remove template ref in user
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE AUSER SET ADEFAULTSERVICETEMPLATEID=null");
//Case 672 - update global first to remove the reference to the template
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE AGLOBAL SET ADEFAULTSERVICETEMPLATEID=null");
DeleteTable("aWorkorder");
//case 1166 moved down past PO
//DeleteTable("aProject");
DeleteTable("aPriority");
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aGlobal SET aWorkorderClosedStatus=null");
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aRegion SET aWorkorderClosedStatus=null");//case 1030 replytoemail is empty which breaks constraint when updating throwing exception
DeleteTable("aWorkorderStatus");
DeleteTable("aWorkorderItemType");
DeleteTable("aWorkorderCategory");
//PURCHASE ORDER RELATED STUFF
DeleteTable("aPurchaseOrderReceiptItem");
DeleteTable("aPurchaseOrderReceipt");
DeleteTable("aPurchaseOrderItem");
DeleteTable("aPurchaseOrder");
//case 1166
DeleteTable("aProject");
DeleteTable("aPartInventoryAdjustmentItem");
DeleteTable("aPartInventoryAdjustment");
DeleteTable("aPart");
DeleteTable("aPartAssembly");
DeleteTable("aPartCategory");
//case 1226 Don't lose the default warehouse on non erased users
//DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aUser SET aWarehouseID=null");
if (!AyaBizUtils.Lite)
{
cm = DBUtil.GetCommandFromSQL("UPDATE aUser SET aWarehouseID=null WHERE (aID <> @ID) AND (aUserType<>6)");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
}
else
{//case 1223
cm = DBUtil.GetCommandFromSQL("UPDATE aUser SET aWarehouseID=null WHERE (aID <> @ID) AND (aID <> @LITEID) AND (aUserType<>6)");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
cm.AddInParameter("@LITEID", DbType.Guid, User.LiteUserID);
DBUtil.DB.ExecuteNonQuery(cm);
}
//All but default part warehouse
DeleteTableWithGuidException("aPartWarehouse", new Guid("{FECD26B2-26A4-471B-B68B-54B642029943}"));
DeleteTable("aRate");
DeleteTable("aRateUnitChargeDescription");
//Case 406
//deleting regions gives ref. integ. error since users have region set
//however this conflicts with docs that say that regions are not deleted
//anyway, so just commented this out
//DeleteTableWithGuidException("aRegion", new Guid("{8236E8D1-CAB1-4797-9C34-93861954AE6A}"));
DeleteTable("aScheduleableUserGroupUser");
DeleteTable("aScheduleableUserGroup");
DeleteTable("aScheduleMarker");
TruncateTable("aSearchDictionary");
TruncateTable("aSearchKey");
//aSecurityGroup : AFTER USERS ARE DELETED
DeleteTable("aServicebank");
DeleteTable("aTaskGroupTask");
DeleteTable("aTaskGroup");
DeleteTable("aTask");
//aTaxCode: Leaving in for now
DeleteTable("aGridFilter");
cm = DBUtil.GetCommandFromSQL("DELETE FROM aUIUserGridLastView WHERE aUserID <> @ID");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
cm = DBUtil.GetCommandFromSQL("DELETE FROM aUIExplorerBarLayout WHERE aUserID <> @ID");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
cm = DBUtil.GetCommandFromSQL("DELETE FROM aUIGridLayout WHERE aUserID <> @ID");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
cm = DBUtil.GetCommandFromSQL("DELETE FROM aUIUserFormSetting WHERE aUserID <> @ID");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aUnit set aReplacedByUnitID=null");
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE aUnit set aParentUnitID=null");
DeleteTable("aUnit");
DeleteTable("aUnitModel");
DeleteTable("aUnitModelCategory");
//aUnitOfMeasure : Leaving in for now
DeleteTable("aUnitServiceType");
DeleteTable("aUserCertificationAssigned");
DeleteTable("aUserCertification");
DeleteTable("aUserSkillAssigned");
DeleteTable("aUserSkill");
//All non default group user rights
cm = DBUtil.GetCommandFromSQL("DELETE FROM aUserRight WHERE aSecurityGroupID <> @ID");
cm.AddInParameter("@ID", DbType.Guid, new Guid("{FF0DE42A-0EA0-429B-9643-64355703E8D1}")/*manager default group*/);
DBUtil.DB.ExecuteNonQuery(cm);
//Delete all users except the utility user accounts (type6) and the admin user
//case 1223 and don't delete the lite user if it's a lite license
if (!AyaBizUtils.Lite)
{
cm = DBUtil.GetCommandFromSQL("DELETE FROM aUser WHERE (aID <> @ID) AND (aUserType<>6)");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
}
else
{//case 1223
cm = DBUtil.GetCommandFromSQL("DELETE FROM aUser WHERE (aID <> @ID) AND (aID <> @LITEID) AND (aUserType<>6)");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
cm.AddInParameter("@LITEID", DbType.Guid, User.LiteUserID);
DBUtil.DB.ExecuteNonQuery(cm);
}
//Delete all security groups but the manager group
DeleteTableWithGuidException("aSecurityGroup", new Guid("{FF0DE42A-0EA0-429B-9643-64355703E8D1}"));
DeleteTable("aClient");
DeleteTable("aHeadOffice");
DeleteTable("aClientGroup");
DeleteTable("aContract");
DeleteTable("aDispatchZone");
DeleteTable("aVendor");
//Set left behind tables to admin creator and updater
cm = DBUtil.GetCommandFromSQL("UPDATE aReport SET aCreator=@ID, aModifier=@ID");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
cm = DBUtil.GetCommandFromSQL("UPDATE aUnitOfMeasure SET aCreator=@ID, aModifier=@ID");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
cm = DBUtil.GetCommandFromSQL("UPDATE aTaxCode SET aCreator=@ID, aModifier=@ID");
cm.AddInParameter("@ID", DbType.Guid, User.AdministratorID);
DBUtil.DB.ExecuteNonQuery(cm);
//April 11th 2006
DeleteTable("aIntegrationLog");
DeleteTable("aIntegrationMap");
DeleteTable("aIntegration");
//Case 73
DeleteTable("aWikiPage");
DeleteTable("aFile");
}
public void DeleteTable(string sTable)
{
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "DELETE FROM " + sTable);
}
public void TruncateTable(string sTable)
{
//Case 264
switch (DBUtil.DB.DBType)
{
case DataBaseType.FireBird:
{
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "DELETE FROM " + sTable);
}
break;
case DataBaseType.MSSQL:
{
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "TRUNCATE TABLE " + sTable);
}
break;
default:
throw new ApplicationException("UNKNOWN DB TYPE IN DBManager.Eraser->DeleteTable");
}
}
public void DeleteTableWithGuidException(string sTable, Guid gDoNotDelete)
{
DBCommandWrapper cm = DBUtil.GetCommandFromSQL("DELETE FROM " + sTable + " WHERE aID <> @ID");
cm.AddInParameter("@ID", DbType.Guid, gDoNotDelete);
DBUtil.DB.ExecuteNonQuery(cm);
}
}
#endregion eraser
#region Eval advance
/// <summary>
/// Advance evaluation data dates to current date
/// </summary>
[Serializable, System.ComponentModel.Browsable(false)]
public class EvalAdvance//DO_NOT_OBFUSCATE
{
System.TimeSpan _ts;
public EvalAdvance(System.DateTime ReferenceDate)
{
_ts = System.DateTime.Today - ReferenceDate;
}
public static void Advance(System.DateTime ReferenceDate)
{
DataPortal.Update(new EvalAdvance(ReferenceDate));
}
public void DataPortal_Update()
{
DBCommandWrapper cm = null;
SmartDate d1 = new SmartDate();
SmartDate d2 = new SmartDate();
SmartDate d3 = new SmartDate();
SmartDate d4 = new SmartDate();
Guid ID;
#region Workorder scheduled users
cm = DBUtil.GetCommandFromSQL(
"UPDATE aWorkorderItemScheduledUser SET " +
"aStartDate=@StartDate, " +
"aStopDate=@StopDate " +
"WHERE aID=@ID");
SafeDataReader dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE, " +
" AWORKORDERITEMSCHEDULEDUSER.ASTOPDATE, " +
" AWORKORDERITEMSCHEDULEDUSER.AID " +
"FROM " +
" AWORKORDERITEMSCHEDULEDUSER ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("aStartDate"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("aStopDate"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion
#region ScheduleMarkers
cm = DBUtil.GetCommandFromSQL(
"UPDATE ASCHEDULEMARKER SET " +
"aStartDate=@StartDate, " +
"aStopDate=@StopDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" ASCHEDULEMARKER.ASTARTDATE, " +
" ASCHEDULEMARKER.ASTOPDATE, " +
" ASCHEDULEMARKER.AID " +
"FROM " +
" ASCHEDULEMARKER ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("aStartDate"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("aStopDate"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion schedmarkers
#region AWORKORDERITEMLABOR
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERITEMLABOR SET " +
"ASERVICESTARTDATE=@StartDate, " +
"ASERVICESTOPDATE=@StopDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERITEMLABOR.ASERVICESTARTDATE, " +
" AWORKORDERITEMLABOR.ASERVICESTOPDATE, " +
" AWORKORDERITEMLABOR.AID " +
"FROM " +
" AWORKORDERITEMLABOR ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("ASERVICESTARTDATE"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("ASERVICESTOPDATE"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERITEMLABOR
#region AWORKORDERITEM
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERITEM SET " +
"AREQUESTDATE=@StartDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERITEM.AREQUESTDATE, " +
" AWORKORDERITEM.AID " +
"FROM " +
" AWORKORDERITEM ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("AREQUESTDATE"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERITEM
#region AWORKORDERITEMLOAN
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERITEMLOAN SET " +
"AOUTDATE=@StartDate, " +
"ARETURNDATE=@StopDate, " +
"ADUEDATE=@OtherDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERITEMLOAN.AOUTDATE, " +
" AWORKORDERITEMLOAN.ADUEDATE, " +
" AWORKORDERITEMLOAN.ARETURNDATE, " +
" AWORKORDERITEMLOAN.AID " +
"FROM " +
" AWORKORDERITEMLOAN ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("AOUTDATE"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("ARETURNDATE"));
d3 = DBUtil.ToLocal(dr.GetSmartDate("ADUEDATE"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
cm.AddInParameter("@OtherDate", DbType.DateTime, process(d3));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERITEMLOAN
#region AWORKORDERITEMOUTSIDESERVICE
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERITEMOUTSIDESERVICE SET " +
"ADATESENT=@StartDate, " +
"ADATERETURNED=@StopDate, " +
"ADATEETA=@OtherDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERITEMOUTSIDESERVICE.ADATESENT, " +
" AWORKORDERITEMOUTSIDESERVICE.ADATEETA, " +
" AWORKORDERITEMOUTSIDESERVICE.ADATERETURNED, " +
" AWORKORDERITEMOUTSIDESERVICE.AID " +
"FROM " +
" AWORKORDERITEMOUTSIDESERVICE ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("ADATESENT"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("ADATERETURNED"));
d3 = DBUtil.ToLocal(dr.GetSmartDate("ADATEETA"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
cm.AddInParameter("@OtherDate", DbType.DateTime, process(d3));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERITEMOUTSIDESERVICE
#region AWORKORDERITEMTRAVEL
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERITEMTRAVEL SET " +
"ATRAVELSTARTDATE=@StartDate, " +
"ATRAVELSTOPDATE=@StopDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERITEMTRAVEL.ATRAVELSTARTDATE, " +
" AWORKORDERITEMTRAVEL.ATRAVELSTOPDATE, " +
" AWORKORDERITEMTRAVEL.AID " +
"FROM " +
" AWORKORDERITEMTRAVEL ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("ATRAVELSTARTDATE"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("ATRAVELSTOPDATE"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERITEMTRAVEL
#region AWORKORDERPREVENTIVEMAINTENANCE
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERPREVENTIVEMAINTENANCE SET " +
"ANEXTSERVICEDATE=@StartDate, " +
"ASTOPGENERATINGDATE=@StopDate, " +
"AGENERATEDATE=@OtherDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERPREVENTIVEMAINTENANCE.ANEXTSERVICEDATE, " +
" AWORKORDERPREVENTIVEMAINTENANCE.AGENERATEDATE, " +
" AWORKORDERPREVENTIVEMAINTENANCE.ASTOPGENERATINGDATE, " +
" AWORKORDERPREVENTIVEMAINTENANCE.AID " +
"FROM " +
" AWORKORDERPREVENTIVEMAINTENANCE ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("ANEXTSERVICEDATE"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("ASTOPGENERATINGDATE"));
d3 = DBUtil.ToLocal(dr.GetSmartDate("AGENERATEDATE"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
cm.AddInParameter("@OtherDate", DbType.DateTime, process(d3));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERPREVENTIVEMAINTENANCE
#region AWORKORDERQUOTE
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERQUOTE SET " +
"AQUOTEREQUESTDATE=@StartDate, " +
"AVALIDUNTILDATE=@StopDate, " +
"ADATEAPPROVED=@dfour, " +
"ADATESUBMITTED=@OtherDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERQUOTE.AQUOTEREQUESTDATE, " +
" AWORKORDERQUOTE.AVALIDUNTILDATE, " +
" AWORKORDERQUOTE.ADATESUBMITTED, " +
" AWORKORDERQUOTE.ADATEAPPROVED, " +
" AWORKORDERQUOTE.AID " +
"FROM " +
" AWORKORDERQUOTE ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("AQUOTEREQUESTDATE"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("AVALIDUNTILDATE"));
d3 = DBUtil.ToLocal(dr.GetSmartDate("ADATESUBMITTED"));
d4 = DBUtil.ToLocal(dr.GetSmartDate("ADATEAPPROVED"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
cm.AddInParameter("@OtherDate", DbType.DateTime, process(d3));
cm.AddInParameter("@dfour", DbType.DateTime, process(d4));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERQUOTE
#region AWORKORDERSERVICE
cm = DBUtil.GetCommandFromSQL(
"UPDATE AWORKORDERSERVICE SET " +
"ASERVICEDATE=@StartDate, " +
"ACLOSEBYDATE=@StopDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" AWORKORDERSERVICE.ASERVICEDATE, " +
" AWORKORDERSERVICE.ACLOSEBYDATE, " +
" AWORKORDERSERVICE.AID " +
"FROM " +
" AWORKORDERSERVICE ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("ASERVICEDATE"));
d2 = DBUtil.ToLocal(dr.GetSmartDate("ACLOSEBYDATE"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
cm.AddInParameter("@StopDate", DbType.DateTime, process(d2));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion AWORKORDERSERVICE
#region Contract expiry dates Case 243
SmartDate ctx = new SmartDate(DBUtil.CurrentWorkingDateTime.AddYears(1));
//CLIENTS
cm = DBUtil.GetCommandFromSQL(
"UPDATE ACLIENT SET " +
"ACONTRACTEXPIRES=@StartDate " +
"WHERE ACONTRACTEXPIRES IS NOT NULL");
cm.Command.Parameters.Clear();
cm.AddInParameter("@StartDate", DbType.DateTime, ctx.DBValue);
DBUtil.DB.ExecuteNonQuery(cm);
//HEAD OFFICES
cm = DBUtil.GetCommandFromSQL(
"UPDATE AHEADOFFICE SET " +
"ACONTRACTEXPIRES=@StartDate " +
"WHERE ACONTRACTEXPIRES IS NOT NULL");
cm.Command.Parameters.Clear();
cm.AddInParameter("@StartDate", DbType.DateTime, ctx.DBValue);
DBUtil.DB.ExecuteNonQuery(cm);
#endregion ctrct expirs
#region schedule start date case 1338
//case 2102 added in schema 90
if (AyaBizUtils.GlobalX.DBSchemaVersion > 89)
{
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE AUSER SET ALASTSCHEDSTARTDATE=null");
DBUtil.DB.ExecuteNonQuery(CommandType.Text, "UPDATE AUSER SET ALASTSCHEDSTOPDATE=null");
}
#endregion
#region CLIENTSERVICEREQUEST
cm = DBUtil.GetCommandFromSQL(
"UPDATE ACLIENTSERVICEREQUEST SET " +
"ACREATED=@StartDate " +
"WHERE aID=@ID");
dr = DBUtil.GetReaderFromSQLString(
"SELECT " +
" ACLIENTSERVICEREQUEST.ACREATED, " +
" ACLIENTSERVICEREQUEST.AID " +
" FROM " +
" ACLIENTSERVICEREQUEST ");
while (dr.Read())
{
d1 = DBUtil.ToLocal(dr.GetSmartDate("ACREATED"));
ID = dr.GetGuid("AID");
cm.Command.Parameters.Clear();
cm.AddInParameter("@ID", DbType.Guid, ID);
cm.AddInParameter("@StartDate", DbType.DateTime, process(d1));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion clientservicerequest
}
/// <summary>
/// process the date and return it as a db value UTC corrected for
/// re-insertion into db
/// </summary>
/// <param name="sd"></param>
/// <returns></returns>
private object process(SmartDate sd)
{
if (!sd.IsEmpty)
sd.Add(_ts);
return DBUtil.ToUTC(sd).DBValue;
}
}
#endregion eval advance
/// <summary>
/// The required schema version to use this AyaNova
/// </summary>
internal static int RequiredSchema
{
get
{
//UPDATE CASE 1354 EVERY TIME A NEW SCHEMA VERSION IS DONE
return 136;
//UPDATE CASE 1354 EVERY TIME A NEW SCHEMA VERSION IS DONE
//https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1354
}
}
#region Upgrade schema
/// <summary>
/// Upgrade schema of database to required version
/// </summary>
[Serializable, System.ComponentModel.Browsable(false)]
public class Schemalizer//DO_NOT_OBFUSCATE
{
private IDbConnection _cn = null;
private IDbTransaction _tr = null;
public Schemalizer()
{
}
public static void UpdateSchema()
{
DataPortal.Update(new Schemalizer());
}
public void DataPortal_Update()
{
AyaBizUtils._SchemaUpdating = true;
DBUtil.DB.ClearPool();
int nSchemaLevelAtStart = int.MaxValue;
//There is nothing that can be done in here to handle errors other than to report them
//If this fails a restore from database is the only option
using (_cn = DBUtil.DB.GetConnection())
{
_cn.Open();
_tr = _cn.BeginTransaction(System.Data.IsolationLevel.Serializable);
try
{
object o = DBUtil.GetScalarFromSQLString("SELECT AGLOBALEX.ADBSCHEMA FROM AGLOBALEX", _tr);
if (o == null || o == System.DBNull.Value)
throw new System.ApplicationException("\r\nDBManager-SchemaUpdate: Unable to determine current DB schema version\r\n");
int nSchemaLevel = (int)o;
nSchemaLevelAtStart = nSchemaLevel;
switch (DBUtil.DB.DBType)
{
/*
______ _ ____ _ _
| ____(_) | _ \(_) | |
| |__ _ _ __ ___| |_) |_ _ __ __| |
| __| | | '__/ _ \ _ <| | '__/ _` |
| | | | | | __/ |_) | | | | (_| |
|_| |_|_| \___|____/|_|_| \__,_|
*/
case DataBaseType.FireBird:
{
#region OLD SCHEMA UPDATES
#region Version 4 (AyaNova 3.1 QBI related stuff) New tables
if (nSchemaLevel < 4)
{
#region Create Integration table
DDL(
"CREATE TABLE AINTEGRATION ( " +
" AID D_GUID NOT NULL, " +
" ACREATED TIMESTAMP, " +
" AMODIFIED TIMESTAMP, " +
" ACREATOR D_GUID, " +
" AMODIFIER D_GUID, " +
" AACTIVE D_BOOL NOT NULL, " +
" ANAME VARCHAR(255) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS, " +
" ALASTCONNECT TIMESTAMP, " +
" AIOBJECT BLOB SEGMENT SIZE 1, " +
" AIOBJECTSIZE INTEGER, " +
" AAPPID D_GUID NOT NULL, " +
" AAPPVERSION VARCHAR(25) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS, " +
" ASYNCCHECKPOINT VARCHAR(255) CHARACTER SET ASCII COLLATE ASCII); "
);
//add constraint
DDL(
"ALTER TABLE AINTEGRATION ADD CONSTRAINT PK_INTEGR PRIMARY KEY (AID); "
);
//Add index
DDL(
"CREATE UNIQUE INDEX IDX_AINTEGRATION1 ON AINTEGRATION(AAPPID); "
);
#endregion
#region Create IntegrationMap table
DDL(
"CREATE TABLE AINTEGRATIONMAP ( " +
" AID D_GUID NOT NULL, " +
" ACREATED TIMESTAMP NOT NULL, " +
" AMODIFIED TIMESTAMP NOT NULL, " +
" ACREATOR D_GUID NOT NULL, " +
" AMODIFIER D_GUID NOT NULL, " +
" AINTEGRATIONID D_GUID NOT NULL, " +
" AROOTOBJECTID D_GUID NOT NULL, " +
" AROOTOBJECTTYPE SMALLINT NOT NULL, " +
" AFOREIGNID VARCHAR(255) CHARACTER SET ASCII NOT NULL COLLATE ASCII, " +
" ANAME VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS, " +
" AFOREIGNCHECKSUM VARCHAR(255) CHARACTER SET ASCII COLLATE ASCII, " +
" AAYANOVACHECKSUM VARCHAR(255) CHARACTER SET ASCII COLLATE ASCII, " +
" AMAPOBJECT BLOB SEGMENT SIZE 1, " +
" AMAPOBJECTSIZE INTEGER, " +
" ALASTSYNC TIMESTAMP NOT NULL); "
);
//add constraint
DDL(
"ALTER TABLE AINTEGRATIONMAP ADD CONSTRAINT PK_INTMAP PRIMARY KEY (AID);"
);
//add constraint
DDL(
"ALTER TABLE AINTEGRATIONMAP ADD CONSTRAINT FK_AINTEGRATIONMAP1 FOREIGN KEY (AINTEGRATIONID) REFERENCES AINTEGRATION(AID);"
);
//Add index
DDL(
"CREATE INDEX IDX_AINTEGRATIONMAP1 ON AINTEGRATIONMAP(AINTEGRATIONID);"
);
//Add index
DDL(
"CREATE UNIQUE INDEX IDX_AINTEGRATIONMAP2 ON AINTEGRATIONMAP(AROOTOBJECTID,AROOTOBJECTTYPE);"
);
#endregion
#region Create IntegrationLog table
DDL(
"CREATE TABLE AINTEGRATIONLOG ( " +
" ACREATED TIMESTAMP NOT NULL, " +
" ACREATOR D_GUID NOT NULL, " +
" AINTEGRATIONID D_GUID NOT NULL, " +
" AMESSAGE VARCHAR(500) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS); "
);
//add first index
DDL(
"CREATE INDEX IDX_AINTEGRATIONLOG1 ON AINTEGRATIONLOG(AINTEGRATIONID);"
);
//Add second index
DDL(
"CREATE INDEX IDX_AINTEGRATIONLOG2 ON AINTEGRATIONLOG(ACREATED);"
);
#endregion
nSchemaLevel = 4;
}
#endregion
#region Version 5 (AyaNova 3.1 Ayanova related stuff)
if (nSchemaLevel < 5)
{
DDL(
"UPDATE aLocalizedText SET aDisplayText= " +
"'FALSE restricts access to part entry and selection of parts used within service workorders. TRUE allows access to all inventory functions.' " +
"WHERE aLocalizedText.aLocale='English' AND aLocalizedText.aKey='Global.Label.UseInventory.Description'"
);
DDL(
"UPDATE aLocalizedText SET aDisplayText= " +
"'AyaNova transportable Locale file (*.xml)' " +
"WHERE aLocalizedText.aLocale='English' AND aLocalizedText.aKey='Locale.Label.LocaleFile'"
);
nSchemaLevel = 5;
}
#endregion
#region Version 6 New table
if (nSchemaLevel < 6)
{
DDL(
"CREATE TABLE aUIUserGridLastView ( " +
"AUSERID D_GUID NOT NULL, " +
"AGRIDKEY VARCHAR(255) CHARACTER SET ASCII NOT NULL COLLATE ASCII, " +
"AVIEWXML D_MEMO, " +
"AFILTERID D_GUID); "
);
//add constraint
DDL(
"ALTER TABLE aUIUserGridLastView ADD CONSTRAINT FK_aUIUserGridLastView1 FOREIGN KEY (AUSERID) REFERENCES AUSER(AID);"
);
//Add index
DDL(
"CREATE INDEX IDX_aUIUserGridLastView1 ON aUIUserGridLastView(AUSERID);"
);
//Add index
//DDL(
// "CREATE INDEX IDX_aUIUserGridLastView2 ON aUIUserGridLastView(AGRIDKEY);"
// );
nSchemaLevel = 6;
}
#endregion
#region Version 7 new table
if (nSchemaLevel < 7)
{
DDL(
"CREATE TABLE aGridFilter ( " +
"aID D_GUID NOT NULL, " +
"ACREATED TIMESTAMP, " +
"AMODIFIED TIMESTAMP, " +
"ACREATOR D_GUID, " +
"AMODIFIER D_GUID, " +
"AGRIDKEY VARCHAR(255) CHARACTER SET ASCII NOT NULL COLLATE ASCII, " +
"ANAME VARCHAR(255) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS, " +
"AFILTERXML D_MEMO, " +
"aOnlyUserID D_GUID, " +
"aOnlySecurityGroupID D_GUID " +
"); "
);
//add constraint
DDL(
"ALTER TABLE aGridFilter ADD CONSTRAINT FK_aGridFilter1 FOREIGN KEY (aOnlyUserID) REFERENCES AUSER(AID);"
);
DDL(
"ALTER TABLE aGridFilter ADD CONSTRAINT FK_aGridFilter2 FOREIGN KEY (aOnlySecurityGroupID) REFERENCES ASECURITYGROUP(AID);"
);
AddNewUserRightToAllSecurityGroups("Object.GridFilter", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 7;
}
#endregion
#region Version 8 (localized text updates only
if (nSchemaLevel < 8)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 8
nSchemaLevel = 8;
}
#endregion
#region Version 9 (localized text updates only
if (nSchemaLevel < 9)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 9
nSchemaLevel = 9;
}
#endregion
#region Version 10 (localized text mods only)
if (nSchemaLevel < 10)
{
//this was missed in the july12 fix for mssql should have been here for firebird as well
//Added 2-Aug-2006 model is actually the name, not the model number
//Updates to change unit model to unit "name"
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Model name, serial number' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.ModelSerial'");
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Serial number, model name' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.SerialModel'");
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Serial number, model name, vendor' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.SerialModelVendor'");
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Vendor, model name, serial number' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.VendorModelSerial'");
nSchemaLevel = 10;
}
#endregion
#region Version 11
if (nSchemaLevel < 11)
{
//Added 2-Aug-2006 cost was not being saved previously in workorderitempart
//so sets all prior workorderitempart's cost to apart's cost in one go
DDL("UPDATE aworkorderitempart set acost=(select acost from apart where apart.aid=aworkorderitempart.apartid)");
nSchemaLevel = 11;
}
#endregion
#region Version 12
if (nSchemaLevel < 12)
{
//Added 31-Aug-2006 Fixes serial numbers that are still set to available
//when they should be set to unavailable due to negative inventory adjustment bug
//fixed in partinventoryadjustmentitem
//Get a list of security groups
SafeDataReader dr12 = null;
ArrayList al12 = new ArrayList();
try
{
dr12 = DBUtil.GetReaderFromSQLString(
"SELECT " +
"APARTSERIAL.AID " +
"FROM " +
"APARTSERIAL " +
"INNER JOIN APARTINVENTORYADJUSTMENTITEM ON (APARTINVENTORYADJUSTMENTITEM.AID = APARTSERIAL.AADJUSTMENTID) " +
"WHERE APARTINVENTORYADJUSTMENTITEM.AQUANTITYADJUSTMENT<0 " +
"AND " +
"APARTSERIAL.AAVAILABLE=1 ", _tr);
while (dr12.Read())
{
al12.Add(dr12.GetGuid("aID"));
}
dr12.Close();
foreach (object o12 in al12)
{
DBCommandWrapper cm12 = DBUtil.GetCommandFromSQL(
"UPDATE APARTSERIAL SET APARTSERIAL.AAVAILABLE=@FALSE WHERE APARTSERIAL.AID=@ID"
);
//Purchase order item fields
cm12.AddInParameter("@ID", DbType.Guid, (Guid)o12);
cm12.AddInParameter("@FALSE", DbType.Boolean, false);
DBUtil.DB.ExecuteNonQuery(cm12, _tr);
}
}
finally
{
if (dr12 != null) dr12.Close();
}
nSchemaLevel = 12;
}
#endregion
#region Version 14
if (nSchemaLevel < 14)
{
AddNewUserRightToAllSecurityGroups("Object.Workorder.Close", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 14;
}
#endregion
//v15 got lost somewhere in the shuffle
#region Version 16
if (nSchemaLevel < 16)
{
//Added: 3-Oct-2006
//to fixup temporary user workaround where we suggested
//user enter a single space into a serial number field in po receipts where
//they couldn't enter a quantity of zero received
DDL("DELETE FROM APARTSERIAL WHERE ASERIALNUMBER=' ' ");
nSchemaLevel = 16;
}
#endregion
#region Version 17
if (nSchemaLevel < 17)
{
//Added: 24-Oct-2006
//change to unitmeterreading entry form to allow reporting
//as a result needed to remove the old uiuserformlayout setting
//so that the new menu will not be overwritten by the saved version
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 " +
"WHERE AFORMNAME='UnitMeterReading' ");
nSchemaLevel = 17;
}
#endregion
#region Version 18
if (nSchemaLevel < 18)
{
//Drop some unused fields from Workorder table
DDL("ALTER TABLE aworkorder DROP ACUSTOM1");
DDL("ALTER TABLE aworkorder DROP ACUSTOM2");
DDL("ALTER TABLE aworkorder DROP ACUSTOM3");
DDL("ALTER TABLE aworkorder DROP ACUSTOM4");
DDL("ALTER TABLE aworkorder DROP ACUSTOM5");
DDL("ALTER TABLE aworkorder DROP ACUSTOM6");
DDL("ALTER TABLE aworkorder DROP ACUSTOM7");
DDL("ALTER TABLE aworkorder DROP ACUSTOM8");
DDL("ALTER TABLE aworkorder DROP ACUSTOM9");
DDL("ALTER TABLE aworkorder DROP ACUSTOM0");
//Added: 7-Nov-2006, WBI client service
//request changes
//drop old tables
DDL("DROP TABLE ACLIENTREQUESTPART");
DDL("DROP TABLE ACLIENTREQUESTTECH");
DDL("DROP TABLE ACLIENTSERVICEREQUESTITEM");
DDL("ALTER TABLE AWORKORDERSERVICE DROP CONSTRAINT FK_AWORKORDERSERVICE_ACLIENTSER");
DDL("DROP TABLE ACLIENTSERVICEREQUEST");
nSchemaLevel = 18;
}
#endregion
#region Version 19 new table
if (nSchemaLevel < 19)
{
DDL(
"CREATE TABLE ACLIENTSERVICEREQUEST ( " +
"aID D_GUID NOT NULL, " +
"ACREATED TIMESTAMP, " +
"AMODIFIED TIMESTAMP, " +
"ACREATOR D_GUID, " +
"AMODIFIER D_GUID, " +
"ATITLE VARCHAR(255) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS, " +
"ADETAILS D_MEMO, " +
"ACLIENTID D_GUID, " +
"AUNITID D_GUID, " +
"AWORKORDERITEMID D_GUID, " +
"ASTATUS SMALLINT NOT NULL, " +
"APRIORITY SMALLINT NOT NULL, " +
"ACLIENTREF VARCHAR(255) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS " +
"); "
);
//add PK constraint
DDL(
"ALTER TABLE ACLIENTSERVICEREQUEST ADD CONSTRAINT PK_CLNTSRVREQ PRIMARY KEY (AID);"
);
//add FK constraints
DDL(
"ALTER TABLE ACLIENTSERVICEREQUEST ADD CONSTRAINT FK_ACLIENTID FOREIGN KEY (ACLIENTID) REFERENCES ACLIENT(AID);"
);
DDL(
"ALTER TABLE ACLIENTSERVICEREQUEST ADD CONSTRAINT FK_AUNITID FOREIGN KEY (AUNITID) REFERENCES AUNIT(AID);"
);
DDL(
"ALTER TABLE ACLIENTSERVICEREQUEST ADD CONSTRAINT FK_AWOITEMID FOREIGN KEY (AWORKORDERITEMID) REFERENCES AWORKORDERITEM(AID);"
);
nSchemaLevel = 19;
}
#endregion
#region Version 20 (localized text updates only
if (nSchemaLevel < 20)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 20;
}
#endregion
#region Version 21
if (nSchemaLevel < 21)
{
//RESET THE EXPLORER BAR LAYOUT SIZE TO 0
//THIS WILL CAUSE FORM1 TO NOT LOAD THE LAYOUT
//WHICH WILL THEN CAUSE THE NEW CLIENTSERVICEREQUESTS ITEM
//TO NOT GET WRITTEN OVER AND THE NEXT CLOSE IT WILL SAVE
//AND THE LAYOUT WILL BE LOADED NORMALLY ON NEXT OPEN
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 21;
}
#endregion
#region Version 22 (localized text updates only
if (nSchemaLevel < 22)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 22;
}
#endregion
#region Version 23
if (nSchemaLevel < 23)
{
//RESET THE MEMOREADER form layout so that the new
//print toolbar option won't throw an exception
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='MemoReader'");
nSchemaLevel = 23;
}
#endregion
#region Version 24
if (nSchemaLevel < 24)
{
//RESET THE PART form layout so that the new
//print toolbar option won't throw an exception
//case 167
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='PartInfo'");
nSchemaLevel = 24;
}
#endregion
#region Version 25 (localized text updates only
if (nSchemaLevel < 25)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 25;
}
#endregion
//Released 3.3.0 at schema 25
#region Version 26
if (nSchemaLevel < 26)
{
//RESET THE service bank form layout so that the new
//print toolbar option won't throw an exception
//case 126
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='ServiceBank'");
//Prior schema updates were not using the NoUpper version so they wouldn't have worked for
//firebird possibly sql when it came to resetting the toolbar so to be safe I'm
//putting them back in here
//v17
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 " +
"WHERE AFORMNAME='UnitMeterReading' ");
//v23
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='MemoReader'");
//v24
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='PartInfo'");
nSchemaLevel = 26;
}
#endregion
#region Version 27 (localized text updates only
if (nSchemaLevel < 27)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 27;
}
#endregion
#region Version 28 Case 242 NOW DOES NOTHING, KEPT FOR CONSISTENCY
if (nSchemaLevel < 28)
{
//DO NOTHING, THIS IS FIXED BY BACKING UP AND RESTORING THE FIREBIRD DATABASE,NOT BY
//THE CODE BELOW, BUT KEEPING THIS SCHEMA LEVEL BECAUSE WE'VE ALREADY UPDATED OUR TEST DB'S
//TO IT
//repair apparently damaged foreign key constraints from adding csr table in schema update 19
//Case 242
////Drop FK constraints
//DDL(
// "ALTER TABLE ACLIENTSERVICEREQUEST DROP CONSTRAINT FK_ACLIENTID;"
// );
//DDL(
// "ALTER TABLE ACLIENTSERVICEREQUEST DROP CONSTRAINT FK_AUNITID;"
// );
//DDL(
// "ALTER TABLE ACLIENTSERVICEREQUEST DROP CONSTRAINT FK_AWOITEMID;"
// );
////add FK constraints
//DDL(
// "ALTER TABLE ACLIENTSERVICEREQUEST ADD CONSTRAINT FK_ACLIENTID FOREIGN KEY (ACLIENTID) REFERENCES ACLIENT(AID);"
// );
//DDL(
// "ALTER TABLE ACLIENTSERVICEREQUEST ADD CONSTRAINT FK_AUNITID FOREIGN KEY (AUNITID) REFERENCES AUNIT(AID);"
// );
//DDL(
// "ALTER TABLE ACLIENTSERVICEREQUEST ADD CONSTRAINT FK_AWOITEMID FOREIGN KEY (AWORKORDERITEMID) REFERENCES AWORKORDERITEM(AID);"
// );
nSchemaLevel = 28;
}
#endregion
#region Version 29 Case 329
if (nSchemaLevel < 29)
{
DDL("DROP INDEX IDX_AINTEGRATIONMAP2");
//Case 329 add aintegrationid to index
DDL(
"CREATE UNIQUE INDEX IDX_AINTEGRATIONMAP2 ON AINTEGRATIONMAP(AROOTOBJECTID,AROOTOBJECTTYPE,AINTEGRATIONID);"
);
nSchemaLevel = 29;
}
#endregion
#region Version 30 (localized text updates only
if (nSchemaLevel < 30)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 30
nSchemaLevel = 30;
}
#endregion
#region Version 31 (Case 420 new fields)
if (nSchemaLevel < 31)
{
//6 RATES FOR SET TIME PERIODS
DDL("ALTER TABLE ALOANITEM ADD ARATEHOUR DECIMAL(18,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEHALFDAY DECIMAL(18,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEDAY DECIMAL(18,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEWEEK DECIMAL(18,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEMONTH DECIMAL(18,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEYEAR DECIMAL(18,5) DEFAULT 0 NOT NULL");
//WORKORDERITEMLOAN TABLE ADDITIONS
//quantity which defaults to 1, used in initial calcs only when first selecting rate / quant
//which fills in charges field that already exists; afterwards just for display and reporting purposes
DDL("ALTER TABLE AWORKORDERITEMLOAN ADD AQUANTITY DECIMAL(18,5) DEFAULT 1 NOT NULL");
//rate selected (0=no rate just manual to replicate previous behaviour, 1-6 corresponds to rates above from loanitem)
//used for initial entry and reporting / review purposes afterwards
DDL("ALTER TABLE AWORKORDERITEMLOAN ADD ARATE SMALLINT DEFAULT 0 NOT NULL");
nSchemaLevel = 31;
}
#endregion
#region Version 32 (localized text updates only
if (nSchemaLevel < 32)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 32
nSchemaLevel = 32;
}
#endregion
#region Version 33 (localized text updates only
if (nSchemaLevel < 33)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 33
nSchemaLevel = 33;
}
#endregion
#region Version 34 (localized text updates only
if (nSchemaLevel < 34)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 34
nSchemaLevel = 34;
}
#endregion
#region Version 35 (localized text updates only
if (nSchemaLevel < 35)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 35
nSchemaLevel = 35;
}
#endregion
#region Version 36 Case 524 mssql update only
if (nSchemaLevel < 36)
{
//Do nothing else here except advance schema version s
//This update is for indexes in MSSQL only that did not get
//imported by tomssql; they already exist here
nSchemaLevel = 36;
}
#endregion
#region AyaNova 4.x
#region Version 37 (localized text updates only
if (nSchemaLevel < 37)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 37
nSchemaLevel = 37;
}
#endregion
#region Version 38 (localized text updates only
if (nSchemaLevel < 38)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 38
nSchemaLevel = 38;
}
#endregion
#region Version 39 (localized text updates only
if (nSchemaLevel < 39) { nSchemaLevel = 39; }
#endregion
#region Version 40
if (nSchemaLevel < 40)
{
//Case 476
DDL("DELETE FROM APARTBYWAREHOUSEINVENTORY WHERE " +
"AQUANTITYONHAND=0 AND AQUANTITYONORDER=0 AND AMINSTOCKLEVEL=0 AND AQTYONORDERCOMMITTED=0 ");
//Case 563
DDL("ALTER TABLE APARTBYWAREHOUSEINVENTORY DROP AACTIVE");
nSchemaLevel = 40;
}
#endregion
#region Version 41 (localized text updates only
if (nSchemaLevel < 41) { nSchemaLevel = 41; }
#endregion
#region Version 42 new table
if (nSchemaLevel < 42)
{
DDL(
"CREATE TABLE AUSERMRU ( " +
"AID D_GUID NOT NULL, " +
"ACREATED TIMESTAMP, " +
"AUSERID D_GUID, " +
"AOBJECTID D_GUID, " +
"AOBJECTTYPE SMALLINT NOT NULL " +
"); "
);
nSchemaLevel = 42;
}
#endregion
#region Version 43 (localized text updates only
if (nSchemaLevel < 43) { nSchemaLevel = 43; }
#endregion
#region Version 44 (add column to user table)
if (nSchemaLevel < 44)
{
DDL("ALTER TABLE AUSER ADD ALASTSCHEDGROUPID D_GUID DEFAULT '{A51ECBE7-792F-45bc-A88D-B16E7E6B1CDD}' NOT NULL");
nSchemaLevel = 44;
}
#endregion
#region Version 45 (add column to workorder table)
if (nSchemaLevel < 45)
{
DDL("ALTER TABLE AWORKORDER DROP ATEMPLATE");
DDL("ALTER TABLE AWORKORDER DROP ATEMPLATEID");
DDL("ALTER TABLE AWORKORDER ADD ATEMPLATEDESCRIPTION VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
nSchemaLevel = 45;
}
#endregion
#region Version 46 (add template columns, drop deprecated ones)
if (nSchemaLevel < 46)
{
//USER
DDL("ALTER TABLE AUSER DROP AWORKORDERTEMPLATE");
DDL("ALTER TABLE AUSER DROP AQUOTETEMPLATE");
DDL("ALTER TABLE AUSER DROP APURCHASEORDERTEMPLATE");
DDL("ALTER TABLE AUSER ADD ADEFAULTSERVICETEMPLATEID D_GUID COLLATE ASCII");
DDL("ALTER TABLE AUSER ADD CONSTRAINT FK_USERTEMPLATE FOREIGN KEY (ADEFAULTSERVICETEMPLATEID) REFERENCES AWORKORDER(AID);");
//CLIENT
DDL("ALTER TABLE ACLIENT DROP ASERVICETEMPLATEID");
DDL("ALTER TABLE ACLIENT ADD ADEFAULTSERVICETEMPLATEID D_GUID COLLATE ASCII");
DDL("ALTER TABLE ACLIENT ADD CONSTRAINT FK_CLIENTTEMPLATE FOREIGN KEY (ADEFAULTSERVICETEMPLATEID) REFERENCES AWORKORDER(AID);");
//GLOBAL
DDL("ALTER TABLE AGLOBAL DROP AWORKORDERTEMPLATE");
DDL("ALTER TABLE AGLOBAL DROP AQUOTETEMPLATE");
DDL("ALTER TABLE AGLOBAL DROP APURCHASEORDERTEMPLATE");
DDL("ALTER TABLE AGLOBAL ADD ADEFAULTSERVICETEMPLATEID D_GUID COLLATE ASCII");
DDL("ALTER TABLE AGLOBAL ADD CONSTRAINT FK_GLOBALTEMPLATE FOREIGN KEY (ADEFAULTSERVICETEMPLATEID) REFERENCES AWORKORDER(AID);");
//REGION - UNUSED
DDL("ALTER TABLE AREGION DROP AWORKORDERTEMPLATE");
DDL("ALTER TABLE AREGION DROP AQUOTETEMPLATE");
DDL("ALTER TABLE AREGION DROP APURCHASEORDERTEMPLATE");
nSchemaLevel = 46;
}
#endregion
#region Version 47 (localized text updates only
if (nSchemaLevel < 47) { nSchemaLevel = 47; }
#endregion
#region Version 48 (Case 432 contactnotes)
if (nSchemaLevel < 48)
{
DDL("ALTER TABLE ACLIENT ADD ACONTACTNOTES D_MEMO");
DDL("ALTER TABLE ACLIENT ADD ACONTACT VARCHAR(500) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE ACLIENT ADD APHONE1 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE ACLIENT ADD APHONE2 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE ACLIENT ADD APHONE3 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE ACLIENT ADD APHONE4 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE ACLIENT ADD APHONE5 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE ACLIENT ADD AEMAIL VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AVENDOR ADD ACONTACTNOTES D_MEMO");
DDL("ALTER TABLE AVENDOR ADD ACONTACT VARCHAR(500) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AVENDOR ADD APHONE1 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AVENDOR ADD APHONE2 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AVENDOR ADD APHONE3 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AVENDOR ADD APHONE4 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AVENDOR ADD APHONE5 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AVENDOR ADD AEMAIL VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AHEADOFFICE ADD ACONTACTNOTES D_MEMO");
DDL("ALTER TABLE AHEADOFFICE ADD ACONTACT VARCHAR(500) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE1 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE2 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE3 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE4 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE5 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AHEADOFFICE ADD AEMAIL VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
nSchemaLevel = 48;
}
#endregion
#region Version 49 (Migrate contact data)
if (nSchemaLevel < 49) { nSchemaLevel = 49; }
#endregion
#region Version 50 (Case 71 follow ups)
if (nSchemaLevel < 50)
{
DDL("ALTER TABLE ASCHEDULEMARKER ADD AFOLLOWID D_GUID COLLATE ASCII");
DDL("ALTER TABLE ASCHEDULEMARKER ADD AFOLLOWTYPE SMALLINT");
//Add index
DDL(
"CREATE INDEX IDX_FOLLOWID ON ASCHEDULEMARKER(AFOLLOWID);"
);
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='ClientInfo'");
nSchemaLevel = 50;
}
#endregion
#region Version 51 (Case 71 follow ups)
if (nSchemaLevel < 51)
{
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='WorkorderInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='HeadOfficeInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='UnitInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='VendorInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='ContractInfo'");
nSchemaLevel = 51;
}
#endregion
#region Version 52 (localized text updates only
if (nSchemaLevel < 52) { nSchemaLevel = 52; }
#endregion
#region Version 53 (localized text updates only
if (nSchemaLevel < 53) { nSchemaLevel = 53; }
#endregion
#region Version 54 (Case 619)
if (nSchemaLevel < 54)
{
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ClientRequestPart'");
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ClientRequestTech'");
//Object.ClientServiceRequestItem
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ClientServiceRequestItem'");
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ContractPart'");
nSchemaLevel = 54;
}
#endregion
#region Version 55 (Case 618)
if (nSchemaLevel < 55)
{
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.UserRight'");
nSchemaLevel = 55;
}
#endregion
#region Version 56 (localized text updates only
if (nSchemaLevel < 56) { nSchemaLevel = 56; }
#endregion
#region Version 57 (add column to user table)
if (nSchemaLevel < 57)
{
DDL("ALTER TABLE AUSER DROP ALASTSCHEDGROUPID");
DDL("ALTER TABLE AUSER ADD ALASTSCHEDGROUPID D_GUID DEFAULT '{A51ECBE7-792F-45bc-A88D-B16E7E6B1CDD}'");
nSchemaLevel = 57;
}
#endregion
#region Version 58 (localized text updates only
if (nSchemaLevel < 58) { nSchemaLevel = 58; }
#endregion
#region Version 59 (localized text updates only
if (nSchemaLevel < 59) { nSchemaLevel = 59; }
#endregion
#region Version 60 (Update contract expiry dates if null)
if (nSchemaLevel < 60) { nSchemaLevel = 60; }
#endregion
#endregion AyaNova 4.x
#region Firebird AyaNova 5.0
#region Version 61 (add region column to various tables)
if (nSchemaLevel < 61)
{
DDL("ALTER TABLE ACONTRACT ADD AREGIONID D_GUID DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDL("ALTER TABLE ACONTRACT ADD CONSTRAINT FK_CONTRACTREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE ALOANITEM ADD AREGIONID D_GUID DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDL("ALTER TABLE ALOANITEM ADD CONSTRAINT FK_LOANREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE ADISPATCHZONE ADD AREGIONID D_GUID DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDL("ALTER TABLE ADISPATCHZONE ADD CONSTRAINT FK_ZONEREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE APROJECT ADD AREGIONID D_GUID DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDL("ALTER TABLE APROJECT ADD CONSTRAINT FK_PROJECTREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE ARATE ADD AREGIONID D_GUID DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDL("ALTER TABLE ARATE ADD CONSTRAINT FK_RATEREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE AREPORT ADD AREGIONID D_GUID DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDL("ALTER TABLE AREPORT ADD CONSTRAINT FK_REPORTREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE APARTWAREHOUSE ADD AREGIONID D_GUID DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDL("ALTER TABLE APARTWAREHOUSE ADD CONSTRAINT FK_WHSREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
nSchemaLevel = 61;
}
#endregion
#region Version 62 WIKI stuff case 73
if (nSchemaLevel < 62)
{
DDL(
"CREATE TABLE AWIKIPAGE ( " +
" AID D_GUID NOT NULL, " +
" ACREATED TIMESTAMP, " +
" AMODIFIED TIMESTAMP, " +
" ACREATOR D_GUID, " +
" AMODIFIER D_GUID, " +
" AROOTOBJECTID D_GUID NOT NULL, " +
" AROOTOBJECTTYPE SMALLINT NOT NULL, " +
" ATITLE VARCHAR(255) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS, " +
" AWOBJECT BLOB SEGMENT SIZE 1, " +
" AWOBJECTSIZE INTEGER, " +
" AINTERNALONLY D_BOOL NOT NULL); "
);
//add constraint
DDL(
"ALTER TABLE AWIKIPAGE ADD CONSTRAINT PK_WIK PRIMARY KEY (AID); "
);
//Add index
DDL(
"CREATE INDEX IDX_AWIKI1 ON AWIKIPAGE(AROOTOBJECTID); "
);
DDL(
"CREATE TABLE AFILE ( " +
" AID D_GUID NOT NULL, " +
" ACREATED TIMESTAMP, " +
" AMODIFIED TIMESTAMP, " +
" ACREATOR D_GUID, " +
" AMODIFIER D_GUID, " +
" AROOTOBJECTID D_GUID NOT NULL, " +
" AROOTOBJECTTYPE SMALLINT NOT NULL, " +
" AFILETYPE SMALLINT NOT NULL, " +
" ANAME VARCHAR(255) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS, " +
" AFILESIZE INTEGER, " +
" AFOBJECT BLOB SEGMENT SIZE 1, " +
" AFOBJECTSIZE INTEGER); "
);
//add constraint
DDL(
"ALTER TABLE AFILE ADD CONSTRAINT PK_AFILE PRIMARY KEY (AID); "
);
//Add index
DDL(
"CREATE INDEX IDX_AFILE1 ON AFILE(AROOTOBJECTID); "
);
nSchemaLevel = 62;
}
#endregion
#region Version 63 WIKI rights case 73
if (nSchemaLevel < 63)
{
AddNewUserRightToAllSecurityGroups("Object.WikiPage", SecurityLevelTypes.ReadWriteDelete);
AddNewUserRightToAllSecurityGroups("Object.AyaFile", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 63;
}
#endregion
#region Version 64 WIKI global.maxfileuploadsize case 73
if (nSchemaLevel < 64)
{
DDL("ALTER TABLE AGLOBAL ADD AMAXFILESIZEMB INTEGER");
nSchemaLevel = 64;
}
#endregion
#region Version 65 (localized text updates only case 73
if (nSchemaLevel < 65) { nSchemaLevel = 65; }
#endregion
#region Version 66 Global WIKI rights case 73
if (nSchemaLevel < 66)
{
AddNewUserRightToAllSecurityGroups("Object.GlobalWikiPage", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 66;
}
#endregion
#region Version 67 (localized text updates only case 73
if (nSchemaLevel < 67) { nSchemaLevel = 67; }
#endregion
#region Version 68 blow away all toolbar and explorer bar saved settings rights case 73
if (nSchemaLevel < 68)
{
//version xx blow away all toolbar settings
//so new wiki item shows up
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 68;
}
#endregion
#region Version 69 (localized text updates only case 73
if (nSchemaLevel < 69) { nSchemaLevel = 69; }
#endregion
#region Version 70 blow away all toolbar and explorer bar saved settings for new icons case 918
if (nSchemaLevel < 70)
{
//version xx blow away all toolbar settings
//so new wiki item shows up
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 70;
}
#endregion
#region Version 71 CLIENT NOTIFICATION case 53
if (nSchemaLevel < 71)
{
//CREATE CLIENT NOTIFICATION EVEN TABLE
DDL(
"CREATE TABLE ACLIENTNOTIFYEVENT ( " +
" AID D_GUID NOT NULL, " +
" ACREATED TIMESTAMP, " +
" AMODIFIED TIMESTAMP, " +
" ACREATOR D_GUID, " +
" AMODIFIER D_GUID, " +
" ACLIENTID D_GUID NOT NULL, " +
" ADELIVERAFTER TIMESTAMP, " +
" AOBJECT BLOB SEGMENT SIZE 1, " +
" AOBJECTSIZE INTEGER); "
);
//ADD FIELD TO DELIVERY LOG FOR THIS TYPE OF DELIVERY
DDL("ALTER TABLE ANOTIFYDELIVERYLOG ADD ATOCLIENTID D_GUID");
//ADD NOTIFICATION FIELDS TO REGION OBJECT
DDL("ALTER TABLE AREGION ADD ACLIENTNOTIFICATION D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD AREPLYTOEMAIL VARCHAR(512) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS");
DDL("ALTER TABLE AREGION ADD AWBIURL VARCHAR(512) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRACCEPTED D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRMSG D_MEMO");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRREJECTED D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRREJECTMSG D_MEMO");
DDL("ALTER TABLE AREGION ADD ANOTIFYNEWWO D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYNEWWOMSG D_MEMO");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOSTATUS D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOSTATMSG D_MEMO");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOSTATUSID D_GUID");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSED D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSEDMSG D_MEMO");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSEDATTACHWO D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSEDRPT D_GUID");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOFOLLOWUP D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOFOLLOWUPMSG D_MEMO");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOFOLLOWUPDAYS INTEGER DEFAULT 10");
//ADD FIELD FOR NOTIFICATION TO CLIENT OBJECT
DDL("ALTER TABLE ACLIENT ADD ASENDNOTIFICATIONS D_BOOL DEFAULT 1 NOT NULL");
nSchemaLevel = 71;
}
#endregion
#region Version 72 (localized text updates only case 53
if (nSchemaLevel < 72) { nSchemaLevel = 72; }
#endregion
#region Version 73 (localized text updates only case 29
if (nSchemaLevel < 73) { nSchemaLevel = 73; }
#endregion
#region Version 74 PROJECT ON PO CASE 49
if (nSchemaLevel < 74)
{
DDL("ALTER TABLE APURCHASEORDER ADD APROJECTID D_GUID");
DDL("ALTER TABLE APURCHASEORDER ADD CONSTRAINT FK_POPROJECT FOREIGN KEY (APROJECTID) REFERENCES APROJECT(AID);");
nSchemaLevel = 74;
}
#endregion
#region Version 75 CASE 78 - NEW TEXT FIELDS FOR UNIT AND PORECEIPT
if (nSchemaLevel < 75)
{
DDL("ALTER TABLE AUNIT ADD ATEXT1 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AUNIT ADD ATEXT2 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AUNIT ADD ATEXT3 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE AUNIT ADD ATEXT4 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE APURCHASEORDERRECEIPT ADD ATEXT1 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
DDL("ALTER TABLE APURCHASEORDERRECEIPT ADD ATEXT2 VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
nSchemaLevel = 75;
}
#endregion
#region Version 76 CASE 251 banked travel
if (nSchemaLevel < 76)
{
DDL("ALTER TABLE AWORKORDERITEMTRAVEL ADD ASERVICEBANKID D_GUID");
DDL("ALTER TABLE AWORKORDERITEMTRAVEL ADD CONSTRAINT FK_WOIT_SBANK FOREIGN KEY (ASERVICEBANKID) REFERENCES ASERVICEBANK(AID);");
nSchemaLevel = 76;
}
#endregion
#region Version 77 (localized text updates only case 866 generate unit from workorder part
if (nSchemaLevel < 77) { nSchemaLevel = 77; }
#endregion
#region Version 78 case 816
if (nSchemaLevel < 78)
{
//THERE WAS AN ERROR HERE, NOT NULL NEEDS TO BE THE *LAST* ITEM ON THE ADD COLUMN STATEMENT
//OR A BUNCH OF WIERD ERRORS OCCUR, I.E.:
/*
* No message for error code 335544569 found.
No message for error code 335544436 found.
No message for error code 335544578 found.
No message for error code 335544382 found.
No message for error code 336397208 found.
* */
DDL("ALTER TABLE AGLOBAL ADD aLaborSchedUserDfltTimeSpan INTEGER DEFAULT 60 NOT NULL");
DDL("ALTER TABLE AGLOBAL ADD aTravelDfltTimeSpan INTEGER DEFAULT 60 NOT NULL");
nSchemaLevel = 78;
}
#endregion
#region Version 79 (localized text updates only case 984
if (nSchemaLevel < 79) { nSchemaLevel = 79; }
#endregion
#region Version 80 (localized text updates only case 764, case 765
if (nSchemaLevel < 80) { nSchemaLevel = 80; }
#endregion
#region Version 81 CASE 36 report security group restriction
if (nSchemaLevel < 81)
{
DDL("ALTER TABLE AREPORT ADD ASECURITYGROUPID D_GUID");
nSchemaLevel = 81;
}
#endregion
#region Version 82 (localized text updates only case 1011
if (nSchemaLevel < 82) { nSchemaLevel = 82; }
#endregion
#region Version 83 case 1038 new toolbar layout saving
if (nSchemaLevel < 83)
{
DDL("ALTER TABLE AUIUSERFORMSETTING DROP AFORMWIDTH");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP AFORMHEIGHT");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP ASPLITPOSITION1");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP ASPLITPOSITION2");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP ALOCATIONX");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP ALOCATIONY");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP ATOOLBARMANAGERLAYOUTSIZE");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP ATOOLBARMANAGERLAYOUTCONTENT");
DDL("ALTER TABLE AUIUSERFORMSETTING ADD ALAYOUT D_MEMO");
nSchemaLevel = 83;
}
#endregion
#region Version 84 (localized text updates only case 829)
if (nSchemaLevel < 84) { nSchemaLevel = 84; }
#endregion
#region Version 85 (localized text updates only case 864)
if (nSchemaLevel < 85) { nSchemaLevel = 85; }
#endregion
#region Version 86 //CASE 848
if (nSchemaLevel < 86)
{
DDL("ALTER TABLE ACLIENTSERVICEREQUEST ADD AREQUESTEDBY VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
nSchemaLevel = 86;
}
#endregion
#region Version 87 (localized text updates only case 857)
if (nSchemaLevel < 87) { nSchemaLevel = 87; }
#endregion
#endregion firebird ayanova 5.0
#region FireBird AyaNova 6.0
#region Version 88 (localized text updates only case 1204)
if (nSchemaLevel < 88) { nSchemaLevel = 88; }
#endregion
#region Version 89 case 1136
if (nSchemaLevel < 89)
{
DDL("ALTER TABLE AGLOBAL ADD aNotifyEncryption VARCHAR(255) CHARACTER SET UNICODE_FSS COLLATE UNICODE_FSS");
nSchemaLevel = 89;
}
#endregion
#region Version 90 case 1219
if (nSchemaLevel < 90)
{
DDL("ALTER TABLE AUSER ADD ALASTSCHEDSTARTDATE TIMESTAMP");
DDL("ALTER TABLE AUSER ADD ALASTSCHEDSTOPDATE TIMESTAMP");
DDL("ALTER TABLE AUSER ADD ALASTSCHEDVIEW SMALLINT");
nSchemaLevel = 90;
}
#endregion
#region Version 91 (Case 1163)
if (nSchemaLevel < 91)
{
//9999 = empty
DDL("ALTER TABLE AUSER ADD ATIMEZONEOFFSET DECIMAL(18,5) DEFAULT 9999 NOT NULL");
nSchemaLevel = 91;
}
#endregion
#region Version 92 (Case 1290 Firebird indexes)
if (nSchemaLevel < 92)
{
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
DDL("CREATE INDEX IDX6_AVENDOR_CVR ON AVENDOR (AID, ANAME) ");
DDL("CREATE INDEX IDX6_AUSRREGION ON AUSER (AID, AREGIONID) ");
DDL("CREATE INDEX IDX6_APROJECTIDNAME ON APROJECT (AID, ANAME) ");
DDL("CREATE INDEX IDX6_ACLIENT_CLIENTSELECTOR ON ACLIENT (ANAME, AID, AACTIVE, AREGIONID) ");
DDL("CREATE INDEX IDX6_ACLIENTDISPZN ON ACLIENT (AID, ADISPATCHZONEID, ANAME) ");
DDL("CREATE INDEX IDX6_AWORKORDER_CVR ON AWORKORDER " +
"( " +
" AWORKORDERTYPE, " +
" AID, " +
" APROJECTID, " +
" AFROMPMID, " +
" AFROMQUOTEID, " +
" AWORKORDERCATEGORYID, " +
" ACLIENTID " +
") ");
DDL("CREATE INDEX IDX6_AUNITMODEL_CVR2 ON AUNITMODEL (AUNITMODELCATEGORYID, AID, AVENDORID)");
DDL("CREATE INDEX IDX6_AUNITMODELIDVEND ON AUNITMODEL (AID,AVENDORID) ");
DDL("CREATE INDEX IDX6_AUNIT_CVR ON AUNIT (AID,AUNITMODELID) ");
DDL("CREATE INDEX IDX6_ACLIENTNOTIFYEVENT_CREAT ON ACLIENTNOTIFYEVENT (ACREATED) ");
DDL("CREATE INDEX IDX6_AADDRESS_CVR ON AADDRESS (AROOTOBJECTID,AADDRESSTYPE) ");
DDL("CREATE INDEX IDX6_AGRIDFILTER_NAME ON AGRIDFILTER (ANAME) ");
DDL("CREATE INDEX IDX6_ASEARCHKEY ON ASEARCHKEY (AWORDID,ASOURCEOBJECTTYPE,ASOURCEOBJECTID) ");
DDL("CREATE INDEX IDX6_ASEARCHDICTIONARY ON ASEARCHDICTIONARY (AWORD) ");
DDL("CREATE INDEX IDX6_ASCHEDULEMARKER_CVR ON ASCHEDULEMARKER (ASTARTDATE,ASTOPDATE) ");
DDL("CREATE INDEX IDX6_AWORKORDERSERVICE_CVR ON AWORKORDERSERVICE (AWORKORDERID, ASERVICENUMBER, ASERVICEDATE, AWORKORDERSTATUSID,AINVOICENUMBER,ACLOSEBYDATE) ");
DDL("CREATE INDEX IDX6_AWOIOUTSIDESERVICECVR ON AWORKORDERITEMOUTSIDESERVICE (AWORKORDERITEMID,AVENDORSENTTOID,AVENDORSENTVIAID)");
DDL("CREATE INDEX IDX6_ANOTIFYEVENT_APPLIESTO ON ANOTIFYEVENT (AAPPLIESTOUSERID) ");
DDL("CREATE INDEX IDX6_APART_4INVENT ON APART (AID,APARTASSEMBLYID,APARTCATEGORYID,AALTERNATIVEWHOLESALERID,AWHOLESALERID,AMANUFACTURERID,APARTNUMBER,AACTIVE,ARETAIL,ACOST) ");
DDL("CREATE INDEX IDX6_APART_CVR ON APART (AID,APARTASSEMBLYID,APARTCATEGORYID,AMANUFACTURERID) ");
DDL("CREATE INDEX IDX6_AWORKORDERITEMPARTCVR ON AWORKORDERITEMPART (AWORKORDERITEMID,APARTSERIALID,APARTWAREHOUSEID,APARTID) ");
DDL("CREATE INDEX IDX6_AWOISCHEDULEDUSER_CVR2 ON AWORKORDERITEMSCHEDULEDUSER (ASTOPDATE,ASTARTDATE,AWORKORDERITEMID) ");
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nSchemaLevel = 92;
}
#endregion
#region Version 93 (localized text updates only case 812)
if (nSchemaLevel < 93) { nSchemaLevel = 93; }
#endregion
#region Version 94 case 812
if (nSchemaLevel < 94)
{
DDL("ALTER TABLE ANOTIFYEVENT ADD ASAVEDMESSAGE VARCHAR(1024) CHARACTER SET UNICODE_FSS NOT NULL COLLATE UNICODE_FSS");
nSchemaLevel = 94;
}
#endregion
#region AyaNova six.one.zero.zero Version 95 case 1353
if (nSchemaLevel < 95)
{
DDL(
"update rdb$relation_fields set " +
"rdb$null_flag = NULL " +
"where (rdb$field_name = 'ASAVEDMESSAGE') " +
"and (rdb$relation_name = 'ANOTIFYEVENT'); "
);
nSchemaLevel = 95;
}
#endregion
#endregion firebird ayanova 6.0
#region FireBird AyaNova 6.2
#region Version 96 case 1348
if (nSchemaLevel < 96)
{
DDL("UPDATE AWORKORDERITEMPARTREQUEST J " +
"SET J.ACREATOR='{2ECC77FC-69E2-4A7E-B88D-BD0ECAF36AED}' " +
"WHERE " +
"J.ACREATOR NOT IN (SELECT AID FROM AUSER) ");
DDL(
"ALTER TABLE AWORKORDERITEMPARTREQUEST ADD CONSTRAINT FK_WOIPTRQST_CREATOR FOREIGN KEY (ACREATOR) REFERENCES AUSER(AID);"
);
nSchemaLevel = 96;
}
#endregion
// goto Finish;
#region Version 97 case 1357
if (nSchemaLevel < 97)
{
DDL(
"ALTER TABLE AWORKORDERITEMLOAN DROP AACTIVE;"
);
nSchemaLevel = 97;
}
#endregion
#region Version 98 case 1382
if (nSchemaLevel < 98)
{
DDL("ALTER TABLE ANOTIFYEVENT ADD ACREATED TIMESTAMP");//NULL is default
nSchemaLevel = 98;
}
#endregion
#region Version 99 case 1382
if (nSchemaLevel < 99)
{
DDL("ALTER TABLE AGLOBAL ADD ASMTPRETRY D_BOOL DEFAULT 0");
nSchemaLevel = 99;
}
#endregion
#endregion FireBird ayanova 6.2
#endregion old schema updates
#region Firebird AyaNova 7.0
#region Version 100 case 1194
if (nSchemaLevel < 100)
{
DDL("ALTER TABLE AGLOBAL ADD AFORMCUSTOM D_MEMO");
nSchemaLevel = 100;
}
#endregion
#region Version 101 Object.WorkorderItemUnit right case 1317
if (nSchemaLevel < 101)
{
AddNewUserRightToAllSecurityGroups("Object.WorkorderItemUnit", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 101;
}
#endregion
#region Version 102 remove object.Workorder right per case 1387
if (nSchemaLevel < 102)
{
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.Workorder'");
nSchemaLevel = 102;
}
#endregion
#region Version 103 case 1346
if (nSchemaLevel < 103)
{
DDL("ALTER TABLE AWORKORDERSERVICE ADD ASIGNATURE D_MEMO");
DDL("ALTER TABLE AWORKORDERSERVICE ADD ASIGNED TIMESTAMP");
nSchemaLevel = 103;
}
#endregion
#region Version 104 case 1346
if (nSchemaLevel < 104)
{
DDL("ALTER TABLE AGLOBAL ADD ASIGNATURETITLE D_MEMO");
DDL("ALTER TABLE AGLOBAL ADD ASIGNATUREHEADER D_MEMO");
DDL("ALTER TABLE AGLOBAL ADD ASIGNATUREFOOTER D_MEMO");
nSchemaLevel = 104;
}
#endregion
#region Version 105 (localized text updates only case 1394
if (nSchemaLevel < 105) { nSchemaLevel = 105; }
#endregion
#region Version 106 case 1394
if (nSchemaLevel < 106)
{
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 106;
}
#endregion
#region Version 107 (localized text updates only case 1446, case 1519
if (nSchemaLevel < 107) { nSchemaLevel = 107; }
#endregion
#region Version 108 case 1553
if (nSchemaLevel < 108)
{
DDL("ALTER TABLE AUSER ADD AMAINGRIDLASTROWCOUNT INTEGER");
DDL("ALTER TABLE AUSER ADD ASCHEDULELASTVIEWOPENONLY D_BOOL");
DDL("ALTER TABLE AUSER ADD ASCHEDULELASTPRINTSETTINGS D_MEMO");
nSchemaLevel = 108;
}
#endregion
#region Version 109 case 1392
if (nSchemaLevel < 109)
{
DDL("ALTER TABLE AGLOBAL ADD ASCHEDUSERNONTODAYSTARTTIME TIMESTAMP");
nSchemaLevel = 109;
}
#endregion
#region Version 110 case 1487
if (nSchemaLevel < 110)
{
DDL("ALTER TABLE AGLOBAL ADD AMAINGRIDAUTOREFRESH D_BOOL DEFAULT 1");
nSchemaLevel = 110;
}
#endregion
#region Version 111 (localized text updates only case 1346)
if (nSchemaLevel < 111) { nSchemaLevel = 111; }
#endregion
#region Version 112 (localized text updates only case 1556)
if (nSchemaLevel < 112) { nSchemaLevel = 112; }
#endregion
#region Version 113 (localized text updates only case 1140)
if (nSchemaLevel < 113) { nSchemaLevel = 113; }
#endregion
#region Version 114 (case 1151)
if (nSchemaLevel < 114)
{
DDL(
" CREATE TABLE AREGIONNOTIFYSTAT ( " +
" AID D_GUID NOT NULL, " +
" AREGIONID D_GUID NOT NULL, " +
" ACREATED TIMESTAMP, " +
" AMODIFIED TIMESTAMP, " +
" ACREATOR D_GUID, " +
" AMODIFIER D_GUID, " +
" AACTIVE D_BOOL DEFAULT 0 NOT NULL, " +
" ANOTIFYWOSTATMSG D_MEMO, " +
" ANOTIFYWOSTATUSID D_GUID, " +
" AWOREPORTID D_GUID " +
" ); "
);
DDL("ALTER TABLE AREGIONNOTIFYSTAT ADD CONSTRAINT FK_RGN_NTFY_STAT FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
nSchemaLevel = 114;
}
#endregion
#region Version 115 (case 1151)
if (nSchemaLevel < 115) { nSchemaLevel = 115; }
#endregion
#region Version 116 (case 1499)
if (nSchemaLevel < 116)
{
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATUS D_BOOL DEFAULT 0 NOT NULL");
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATMSG D_MEMO");
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATUSTYPE SMALLINT");
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATUSRPT D_GUID");
nSchemaLevel = 116;
}
#endregion
#region Version 117 (localized text updates only case 1555)
if (nSchemaLevel < 117) { nSchemaLevel = 117; }
#endregion
#region Version 118 (Unit object updates only case 1687)
if (nSchemaLevel < 118) { nSchemaLevel = 118; }
#endregion
#endregion fb aya 7
#region FireBird AyaNova 7.2
#region Version 119 (Localized text updates only case 1805)
if (nSchemaLevel < 119) { nSchemaLevel = 119; }
#endregion
#region Version 120 case 1805
if (nSchemaLevel < 120)
{
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 120;
}
#endregion
#region Version 121 (Localized text updates only case 1805)
if (nSchemaLevel < 121) { nSchemaLevel = 121; }
#endregion
#region Version 122 (Localized text updates only case 1805)
if (nSchemaLevel < 122) { nSchemaLevel = 122; }
#endregion
#region Version 123 (Localized text updates only case 1805)
if (nSchemaLevel < 123) { nSchemaLevel = 123; }
#endregion
#region Version 124 (Localized text updates only case 1122)
if (nSchemaLevel < 124) { nSchemaLevel = 124; }
#endregion
#region Version 125 (Localized text updates only case 1810)
if (nSchemaLevel < 125) { nSchemaLevel = 125; }
#endregion
#region Version 126 (Localized text updates only case 1909)
if (nSchemaLevel < 126) { nSchemaLevel = 126; }
#endregion
#endregion fb aya 7.2
#region FireBird AyaNova 7.3
#region Version 127 (Localized text updates only case 1995)
if (nSchemaLevel < 127) { nSchemaLevel = 127; }
#endregion
#region Version 128 (Localized text updates only case 2067)
if (nSchemaLevel < 128) { nSchemaLevel = 128; }
#endregion
#endregion fb v 7.3
#region FireBird AyaNova 7.4
#region Version 129 (case 2094 Subscription licensing)
//reset all forms if the schema at the start was less than 119
//which is when Dashboard feature was added and is the last main
//item which could be missing from display due to old form settings
if (nSchemaLevelAtStart < 119)
{
//RESET explorer bar layout to catch any items not caught before
//DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
}
//case 2094
if (nSchemaLevel < 129) { nSchemaLevel = 129; }
#endregion
#endregion fb v 7.4
#region FireBird AyaNova 7.5
#region Version 130 (case 3150 new unit name display formats)
//case 3150
if (nSchemaLevel < 130) { nSchemaLevel = 130; }
#endregion
#region Version 131 (case 1968)
if (nSchemaLevel < 131)
{
DDL("ALTER TABLE ASCHEDULEMARKER ADD ACOMPLETED D_BOOL DEFAULT 0 NOT NULL");
nSchemaLevel = 131;
}
#endregion
#region Version 132 (case 1968 schedmarker "completed")
//case 1968
if (nSchemaLevel < 132) { nSchemaLevel = 132; }
#endregion
#region Version 133 blow explorer bar saved settings case 1967
//case 1967
if (nSchemaLevel < 133)
{
//DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 133;
}
#endregion
#region Version 134 (case 3132)
if (nSchemaLevel < 134)
{
DDL("ALTER TABLE AWORKORDER ADD ATEMPLATEFRESHPRICE D_BOOL DEFAULT 0 NOT NULL");
nSchemaLevel = 134;
}
#endregion
#region Firebird Version 135 Case 329 redux
if (nSchemaLevel < 135)
{
DDL("DROP INDEX IDX_AINTEGRATIONMAP2");
//Case 329 add aintegrationid to index
DDL(
"CREATE UNIQUE INDEX IDX_AINTEGRATIONMAP2 ON AINTEGRATIONMAP(AROOTOBJECTID,AROOTOBJECTTYPE,AINTEGRATIONID);"
);
nSchemaLevel = 135;
}
#endregion
#region Firebird Version 136 Case 3740
if (nSchemaLevel < 136)
{
//-- Delete 'closed none received' orphan poitems
DDL(@"DELETE FROM APURCHASEORDERITEM POI WHERE EXISTS (SELECT AID FROM APURCHASEORDER PO WHERE PO.AID=POI.APURCHASEORDERID AND PO.ASTATUS=6);");
//-- Fix 'Closed - partially received' po items with mismatching quantities
DDL(
@"MERGE INTO APURCHASEORDERITEM AS POI
USING APURCHASEORDER AS PO
ON PO.AID=POI.APURCHASEORDERID AND PO.ASTATUS=4
WHEN MATCHED THEN
UPDATE SET POI.AQUANTITYORDERED=POI.AQUANTITYRECEIVED, POI.ACLOSED=1;
");
//-- Reset all ON ORDER to zero
DDL(@"update APARTBYWAREHOUSEINVENTORY set AQUANTITYONORDER=0;");
//-- Update on order to actual values in PO Items
DDL(
@"MERGE INTO APARTBYWAREHOUSEINVENTORY AS B
USING APURCHASEORDERITEM AS A
ON A.APARTWAREHOUSEID=B.APARTWAREHOUSEID AND A.APARTID = B.APARTID
WHEN MATCHED THEN
UPDATE SET B.AQUANTITYONORDER=A.AQUANTITYORDERED-A.AQUANTITYRECEIVED
");
//-- Reset all on order committed to zero
DDL("update APARTBYWAREHOUSEINVENTORY set AQTYONORDERCOMMITTED = 0;");
//-- Update on order committed to actual values in PO Items
DDL(
@"MERGE INTO APARTBYWAREHOUSEINVENTORY AS B
USING APURCHASEORDERITEM AS A
ON A.APARTWAREHOUSEID=B.APARTWAREHOUSEID AND A.APARTID = B.APARTID AND A.ACLOSED=0 AND A.AWORKORDERITEMPARTREQUESTID IS NOT NULL
WHEN MATCHED THEN
UPDATE SET B.AQTYONORDERCOMMITTED=A.AQUANTITYORDERED-A.AQUANTITYRECEIVED
");
nSchemaLevel = 136;
}
#endregion
#endregion fb v 7.5
//UPDATE CASE 1354 EVERY TIME A NEW SCHEMA VERSION IS DONE
//NEW FIREBIRD SCHEMA LEVELS ABOVE HERE
//
}
break;
/*
__ __ _____ _____ ____ _
| \/ |/ ____| / ____|/ __ \| |
| \ / | (___ | (___ | | | | |
| |\/| |\___ \ \___ \| | | | |
| | | |____) | ____) | |__| | |____
|_| |_|_____/ |_____/ \___\_\______|
*/
case DataBaseType.MSSQL:
{
#region OLD SCHEMA UPDATES
#region Version 4 (AyaNova 3.1 QBI related stuff)
if (nSchemaLevel < 4)
{
#region Create Integration table
DDL(
"CREATE TABLE [dbo].[AINTEGRATION] ( " +
" [AID] [uniqueidentifier] NOT NULL , " +
" [ACREATED] [datetime] NULL , " +
" [AMODIFIED] [datetime] NULL , " +
" [ACREATOR] [uniqueidentifier] NULL , " +
" [AMODIFIER] [uniqueidentifier] NULL , " +
" [AACTIVE] [bit] NOT NULL , " +
" [ANAME] [nvarchar] (255) NOT NULL , " +
" [ALASTCONNECT] [datetime] NULL , " +
" [AIOBJECT] [image] NULL , " +
" [AIOBJECTSIZE] [int] NULL , " +
" [AAPPID] [uniqueidentifier] NOT NULL , " +
" [AAPPVERSION] [nvarchar] (25) NOT NULL , " +
" [ASYNCCHECKPOINT] [nvarchar] (255) NULL " +
") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
//add pk
DDL(
"ALTER TABLE [dbo].[AINTEGRATION] ADD " +
" PRIMARY KEY NONCLUSTERED " +
" ( " +
" [AID] " +
" ) ON [PRIMARY] "
);
//Add index
DDL(
"CREATE INDEX [IDX_AINTEGRATION1] ON [dbo].[AINTEGRATION]([AAPPID]) ON [PRIMARY]"
);
#endregion
#region Create IntegrationMap table
DDL(
"CREATE TABLE [dbo].[AINTEGRATIONMAP] ( " +
" [AID] [uniqueidentifier] NOT NULL , " +
" [ACREATED] [datetime] NOT NULL , " +
" [AMODIFIED] [datetime] NOT NULL , " +
" [ACREATOR] [uniqueidentifier] NOT NULL , " +
" [AMODIFIER] [uniqueidentifier] NOT NULL , " +
" [AINTEGRATIONID] [uniqueidentifier] NOT NULL , " +
" [AROOTOBJECTID] [uniqueidentifier] NOT NULL , " +
" [AROOTOBJECTTYPE] [smallint] NOT NULL , " +
" [AFOREIGNID] [nvarchar] (255) NOT NULL , " +
" [ANAME] [nvarchar] (255) NULL , " +
" [AFOREIGNCHECKSUM] [nvarchar] (255) NULL , " +
" [AAYANOVACHECKSUM] [nvarchar] (255) NULL , " +
" [AMAPOBJECT] [image] NULL , " +
" [AMAPOBJECTSIZE] [int] NULL , " +
" [ALASTSYNC] [datetime] NOT NULL " +
") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
//add pk
DDL(
"ALTER TABLE [dbo].[AINTEGRATIONMAP] ADD " +
" PRIMARY KEY NONCLUSTERED " +
" ( " +
" [AID] " +
" ) ON [PRIMARY] "
);
//add index
DDL(
"CREATE INDEX [IDX_AINTEGRATIONMAP1] ON [dbo].[AINTEGRATIONMAP]([AINTEGRATIONID]) ON [PRIMARY]"
);
//Add index
DDL(
"CREATE UNIQUE INDEX [IDX_AINTEGRATIONMAP2] ON [dbo].[AINTEGRATIONMAP]([AROOTOBJECTID], [AROOTOBJECTTYPE]) ON [PRIMARY]"
);
//Add fk
DDL(
"ALTER TABLE [dbo].[AINTEGRATIONMAP] ADD " +
" CONSTRAINT [FK_AINTEGRATIONMAP1] FOREIGN KEY " +
" ( " +
" [AINTEGRATIONID] " +
" ) REFERENCES [dbo].[AINTEGRATION] ( " +
" [AID] " +
" ) "
);
#endregion
#region Create IntegrationLog table
DDL(
"CREATE TABLE [dbo].[AINTEGRATIONLOG] ( " +
" [ACREATED] [datetime] NOT NULL , " +
" [ACREATOR] [uniqueidentifier] NOT NULL , " +
" [AINTEGRATIONID] [uniqueidentifier] NOT NULL , " +
" [AMESSAGE] [nvarchar] (500) NOT NULL " +
") ON [PRIMARY] "
);
//add first index
DDL(
" CREATE INDEX [IDX_AINTEGRATIONLOG1] ON [dbo].[AINTEGRATIONLOG]([AINTEGRATIONID]) ON [PRIMARY]"
);
//Add second index
DDL(
"CREATE INDEX [IDX_AINTEGRATIONLOG2] ON [dbo].[AINTEGRATIONLOG]([ACREATED]) ON [PRIMARY]"
);
#endregion
nSchemaLevel = 4;
}
#endregion
#region Version 5 (AyaNova 3.1 Ayanova related stuff)
if (nSchemaLevel < 5)
{
DDL(
"UPDATE aLocalizedText SET aDisplayText= " +
"'FALSE restricts access to part entry and selection of parts used within service workorders. TRUE allows access to all inventory functions.' " +
"WHERE aLocalizedText.aLocale='English' AND aLocalizedText.aKey='Global.Label.UseInventory.Description'"
);
DDL(
"UPDATE aLocalizedText SET aDisplayText= " +
"'AyaNova transportable Locale file (*.xml)' " +
"WHERE aLocalizedText.aLocale='English' AND aLocalizedText.aKey='Locale.Label.LocaleFile'"
);
nSchemaLevel = 5;
}
#endregion
#region Version 6
if (nSchemaLevel < 6)
{
DDL(
"CREATE TABLE [dbo].[aUIUserGridLastView] ( " +
"[AUSERID] [uniqueidentifier] NOT NULL , " +
"[AGRIDKEY] [nvarchar] (255) NULL , " +
"[AVIEWXML] [ntext] NOT NULL , " +
"[AFILTERID] [uniqueidentifier] NULL " +
") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
//add index
DDL(
"CREATE INDEX [IDX_aUIUserGridLastView1] ON [dbo].[aUIUserGridLastView]([AUSERID]) ON [PRIMARY]"
);
//Add index
DDL(
"CREATE INDEX [IDX_aUIUserGridLastView2] ON [dbo].[aUIUserGridLastView]([AGRIDKEY]) ON [PRIMARY]"
);
//Add fk
DDL(
"ALTER TABLE [dbo].[aUIUserGridLastView] ADD " +
" CONSTRAINT [FK_aUIUserGridLastView1] FOREIGN KEY " +
" ( " +
" [AUSERID] " +
" ) REFERENCES [dbo].[AUSER] ( " +
" [AID] " +
" ) "
);
nSchemaLevel = 6;
}
#endregion
#region Version 7
if (nSchemaLevel < 7)
{
DDL(
"CREATE TABLE [dbo].[aGridFilter] ( " +
"[AID] [uniqueidentifier] NOT NULL , " +
"[ACREATED] [datetime] NULL , " +
"[AMODIFIED] [datetime] NULL , " +
"[ACREATOR] [uniqueidentifier] NULL , " +
"[AMODIFIER] [uniqueidentifier] NULL , " +
"[AGRIDKEY] [nvarchar] (255) NULL , " +
"[ANAME] [nvarchar] (255) NULL , " +
"[AFILTERXML] [ntext] NOT NULL , " +
"[AONLYUSERID] [uniqueidentifier] NULL, " +
"[AONLYSECURITYGROUPID] [uniqueidentifier] NULL, " +
") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
//Add fk
DDL(
"ALTER TABLE [dbo].[aGridFilter] ADD " +
" CONSTRAINT [FK_aGridFilter1] FOREIGN KEY " +
" ( " +
" [AONLYUSERID] " +
" ) REFERENCES [dbo].[AUSER] ( " +
" [AID] " +
" ) "
);
DDL(
"ALTER TABLE [dbo].[aGridFilter] ADD " +
" CONSTRAINT [FK_aGridFilter2] FOREIGN KEY " +
" ( " +
" [AONLYSECURITYGROUPID] " +
" ) REFERENCES [dbo].[ASECURITYGROUP] ( " +
" [AID] " +
" ) "
);
AddNewUserRightToAllSecurityGroups("Object.GridFilter", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 7;
}
#endregion
#region Version 8 (localized text updates only
if (nSchemaLevel < 8)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 8
nSchemaLevel = 8;
}
#endregion
#region Version 9 (localized text updates only
if (nSchemaLevel < 9)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 9
nSchemaLevel = 9;
}
#endregion
#region Version 10 (localized text mods only)
if (nSchemaLevel < 10)
{
//Added 12-July-2006 model is actually the name, not the model number
//Updates to change unit model to unit "name"
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Model name, serial number' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.ModelSerial'");
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Serial number, model name' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.SerialModel'");
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Serial number, model name, vendor' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.SerialModelVendor'");
DDLNoUpper("UPDATE ALOCALIZEDTEXT SET aDisplayText='Vendor, model name, serial number' WHERE ALOCALE='English' AND AKEY='UnitNameDisplayFormats.Label.VendorModelSerial'");
nSchemaLevel = 10;
}
#endregion
#region Version 11
if (nSchemaLevel < 11)
{
//Added 2-Aug-2006 cost was not being saved previously in workorderitempart
//so sets all prior workorderitempart's cost to apart's cost in one go
DDL("UPDATE aworkorderitempart set acost=(select acost from apart where apart.aid=aworkorderitempart.apartid)");
nSchemaLevel = 11;
}
#endregion
#region Version 12
if (nSchemaLevel < 12)
{
//Added 31-Aug-2006 Fixes serial numbers that are still set to available
//when they should be set to unavailable due to negative inventory adjustment bug
//fixed in partinventoryadjustmentitem
DDL("UPDATE APARTSERIAL " +
"SET AAVAILABLE=0 " +
"FROM " +
"APARTINVENTORYADJUSTMENTITEM " +
"INNER JOIN APARTSERIAL ON (APARTINVENTORYADJUSTMENTITEM.AID = APARTSERIAL.AADJUSTMENTID) " +
"WHERE APARTINVENTORYADJUSTMENTITEM.AQUANTITYADJUSTMENT<0 " +
"AND " +
"APARTSERIAL.AAVAILABLE=1 ");
nSchemaLevel = 12;
}
#endregion
#region Version 14
if (nSchemaLevel < 14)
{
AddNewUserRightToAllSecurityGroups("Object.Workorder.Close", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 14;
}
#endregion
//v15 got lost somewhere in the shuffle
#region Version 16
if (nSchemaLevel < 16)
{
//Added: 3-Oct-2006
//to fixup temporary user workaround where we suggested
//user enter a single space into a serial number field in po receipts where
//they couldn't enter a quantity of zero received
DDL("DELETE FROM APARTSERIAL WHERE ASERIALNUMBER=' ' ");
nSchemaLevel = 16;
}
#endregion
#region Version 17
if (nSchemaLevel < 17)
{
//Added: 24-Oct-2006
//change to unitmeterreading entry form to allow reporting
//as a result needed to remove the old uiuserformlayout setting
//so that the new menu will not be overwritten by the saved version
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 " +
"WHERE AFORMNAME='UnitMeterReading' ");
nSchemaLevel = 17;
}
#endregion
#region Version 18
if (nSchemaLevel < 18)
{
//Drop some unused fields from Workorder table
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM1");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM2");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM3");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM4");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM5");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM6");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM7");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM8");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM9");
DDL("ALTER TABLE aworkorder DROP COLUMN ACUSTOM0");
//Added: 7-Nov-2006, WBI client service
//request changes
//drop old tables
DDL("DROP TABLE ACLIENTREQUESTPART");
DDL("DROP TABLE ACLIENTREQUESTTECH");
DDL("DROP TABLE ACLIENTSERVICEREQUESTITEM");
DDL("ALTER TABLE AWORKORDERSERVICE DROP CONSTRAINT FK_AWORKORDERSERVICE_ACLIENTSER");
DDL("DROP TABLE ACLIENTSERVICEREQUEST");
nSchemaLevel = 18;
}
#endregion
#region Version 19
if (nSchemaLevel < 19)
{
DDL(
"CREATE TABLE [dbo].[ACLIENTSERVICEREQUEST] ( " +
"[AID] [uniqueidentifier] NOT NULL , " +
"[ACREATED] [datetime] NULL , " +
"[AMODIFIED] [datetime] NULL , " +
"[ACREATOR] [uniqueidentifier] NULL , " +
"[AMODIFIER] [uniqueidentifier] NULL , " +
"[ACLIENTID] [uniqueidentifier] NOT NULL, " +
"[ATITLE] [nvarchar] (255) NOT NULL , " +
"[ADETAILS] [ntext] NULL , " +
"[AUNITID] [uniqueidentifier] NULL, " +
"[AWORKORDERITEMID] [uniqueidentifier] NULL, " +
"[ASTATUS] [smallint] NOT NULL , " +
"[APRIORITY] [smallint] NOT NULL , " +
"[ACLIENTREF] [nvarchar] (255) NULL " +
") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
//add pk
DDL(
"ALTER TABLE [dbo].[ACLIENTSERVICEREQUEST] ADD " +
" PRIMARY KEY NONCLUSTERED " +
" ( " +
" [AID] " +
" ) ON [PRIMARY] "
);
//Add fk
DDL(
"ALTER TABLE [dbo].[ACLIENTSERVICEREQUEST] ADD " +
" CONSTRAINT [FK_ACLIENTID] FOREIGN KEY " +
" ( " +
" [ACLIENTID] " +
" ) REFERENCES [dbo].[ACLIENT] ( " +
" [AID] " +
" ) "
);
DDL(
"ALTER TABLE [dbo].[ACLIENTSERVICEREQUEST] ADD " +
" CONSTRAINT [FK_AUNITID] FOREIGN KEY " +
" ( " +
" [AUNITID] " +
" ) REFERENCES [dbo].[AUNIT] ( " +
" [AID] " +
" ) "
);
DDL(
"ALTER TABLE [dbo].[ACLIENTSERVICEREQUEST] ADD " +
" CONSTRAINT [FK_AWOITEMID] FOREIGN KEY " +
" ( " +
" [AWORKORDERITEMID] " +
" ) REFERENCES [dbo].[AWORKORDERITEM] ( " +
" [AID] " +
" ) "
);
//Add workorderitem connection
nSchemaLevel = 19;
}
#endregion
#region Version 20 (localized text updates only
if (nSchemaLevel < 20)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 20;
}
#endregion
#region Version 21
if (nSchemaLevel < 21)
{
//RESET THE EXPLORER BAR LAYOUT SIZE TO 0
//THIS WILL CAUSE FORM1 TO NOT LOAD THE LAYOUT
//WHICH WILL THEN CAUSE THE NEW CLIENTSERVICEREQUESTS ITEM
//TO NOT GET WRITTEN OVER AND THE NEXT CLOSE IT WILL SAVE
//AND THE LAYOUT WILL BE LOADED NORMALLY ON NEXT OPEN
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 21;
}
#endregion
#region Version 22 (localized text updates only
if (nSchemaLevel < 22)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 22;
}
#endregion
#region Version 23
if (nSchemaLevel < 23)
{
//RESET THE MEMOREADER form layout so that the new
//print toolbar option won't throw an exception
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='MemoReader'");
nSchemaLevel = 23;
}
#endregion
#region Version 24
if (nSchemaLevel < 24)
{
//RESET THE PART form layout so that the new
//print toolbar option won't throw an exception
//case 167
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='PartInfo'");
nSchemaLevel = 24;
}
#endregion
#region Version 25 (localized text updates only
if (nSchemaLevel < 25)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 25;
}
#endregion
//Released 3.3.0 at schema 25
#region Version 26
if (nSchemaLevel < 26)
{
//RESET THE service bank form layout so that the new
//print toolbar option won't throw an exception
//case 126
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='ServiceBank'");
//Prior schema updates were not using the NoUpper version so they wouldn't have worked for
//firebird possibly sql when it came to resetting the toolbar so to be safe I'm
//putting them back in here
//v17
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 " +
"WHERE AFORMNAME='UnitMeterReading' ");
//v23
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='MemoReader'");
//v24
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='PartInfo'");
nSchemaLevel = 26;
}
#endregion
#region Version 27 (localized text updates only
if (nSchemaLevel < 27)
{
//Do nothing else here except advance schema version so localized text
//below can kick in
nSchemaLevel = 27;
}
#endregion
#region Version 28 (Case 242 Firebird update only)
if (nSchemaLevel < 28)
{
//Do nothing else here except advance schema version
nSchemaLevel = 28;
}
#endregion
#region Version 29 Case 329
if (nSchemaLevel < 29)
{
DDL("DROP INDEX [dbo].[AINTEGRATIONMAP].[IDX_AINTEGRATIONMAP2]");
//Case 329 add aintegrationid to index
//Add index
DDL(
"CREATE UNIQUE INDEX [IDX_AINTEGRATIONMAP2] ON [dbo].[AINTEGRATIONMAP]([AROOTOBJECTID], [AROOTOBJECTTYPE] ,[AINTEGRATIONID]) ON [PRIMARY]"
);
nSchemaLevel = 29;
}
#endregion
#region Version 30 (localized text updates only
if (nSchemaLevel < 30)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 30
nSchemaLevel = 30;
}
#endregion
#region Version 31 (Case 420 new fields)
if (nSchemaLevel < 31)
{
//6 RATES FOR SET TIME PERIODS
DDL("ALTER TABLE ALOANITEM ADD ARATEHOUR DECIMAL(19,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEHALFDAY DECIMAL(19,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEDAY DECIMAL(19,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEWEEK DECIMAL(19,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEMONTH DECIMAL(19,5) DEFAULT 0 NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD ARATEYEAR DECIMAL(19,5) DEFAULT 0 NOT NULL");
//WORKORDERITEMLOAN TABLE ADDITIONS
//quantity which defaults to 1, used in initial calcs only when first selecting rate / quant
//which fills in charges field that already exists; afterwards just for display and reporting purposes
DDL("ALTER TABLE AWORKORDERITEMLOAN ADD AQUANTITY DECIMAL(19,5) DEFAULT 1 NOT NULL");
//rate selected (0=no rate just manual to replicate previous behaviour, 1-6 corresponds to rates above from loanitem)
//used for initial entry and reporting / review purposes afterwards
DDL("ALTER TABLE AWORKORDERITEMLOAN ADD ARATE SMALLINT DEFAULT 0 NOT NULL");
nSchemaLevel = 31;
}
#endregion
#region Version 32 (localized text updates only
if (nSchemaLevel < 32)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 32
nSchemaLevel = 32;
}
#endregion
#region Version 33 (localized text updates only
if (nSchemaLevel < 33)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 33
nSchemaLevel = 33;
}
#endregion
#region Version 34 (localized text updates only
if (nSchemaLevel < 34)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 34
nSchemaLevel = 34;
}
#endregion
#region Version 35 (localized text updates only
if (nSchemaLevel < 35)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 35
nSchemaLevel = 35;
}
#endregion
#region Version 36 Case 524 missing indexes
if (nSchemaLevel < 36)
{
//Case 524
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AADDRESS]') AND name = N'AADDRESS_IDX1') " +
"CREATE INDEX AADDRESS_IDX1 ON AADDRESS ( AROOTOBJECTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AASSIGNEDDOC]') AND name = N'AASSIGNEDDOC_IDX1') " +
"CREATE INDEX AASSIGNEDDOC_IDX1 ON AASSIGNEDDOC ( AROOTOBJECTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ACLIENTNOTE]') AND name = N'ACLIENTNOTE_IDX1') " +
"CREATE INDEX ACLIENTNOTE_IDX1 ON ACLIENTNOTE ( ACLIENTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ACONTACT]') AND name = N'ACONTACT_IDX1') " +
"CREATE INDEX ACONTACT_IDX1 ON ACONTACT ( AROOTOBJECTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ACONTACTPHONE]') AND name = N'ACONTACTPHONE_IDX1') " +
"CREATE INDEX ACONTACTPHONE_IDX1 ON ACONTACTPHONE ( ACONTACTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ACONTRACTRATE]') AND name = N'ACONTRACTRATE_IDX1') " +
"CREATE INDEX ACONTRACTRATE_IDX1 ON ACONTRACTRATE ( ACONTRACTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AINTEGRATION]') AND name = N'IDX_AINTEGRATION1') " +
"CREATE INDEX IDX_AINTEGRATION1 ON AINTEGRATION ( AAPPID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AINTEGRATIONLOG]') AND name = N'IDX_AINTEGRATIONLOG1') " +
"CREATE INDEX IDX_AINTEGRATIONLOG1 ON AINTEGRATIONLOG ( AINTEGRATIONID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AINTEGRATIONLOG]') AND name = N'IDX_AINTEGRATIONLOG2') " +
"CREATE INDEX IDX_AINTEGRATIONLOG2 ON AINTEGRATIONLOG ( ACREATED ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AINTEGRATIONMAP]') AND name = N'IDX_AINTEGRATIONMAP1') " +
"CREATE INDEX IDX_AINTEGRATIONMAP1 ON AINTEGRATIONMAP ( AINTEGRATIONID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AMEMO]') AND name = N'AMAIL_IDX1') " +
"CREATE INDEX AMAIL_IDX1 ON AMEMO ( ATOID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AOBJECTCUSTOMFIELD]') AND name = N'AOBJECTCUSTOMFIELD_IDX1') " +
"CREATE INDEX AOBJECTCUSTOMFIELD_IDX1 ON AOBJECTCUSTOMFIELD ( AOBJECTNAME ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APART]') AND name = N'APART_IDX1') " +
"CREATE INDEX APART_IDX1 ON APART ( APARTASSEMBLYID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APARTINVENTORYADJUSTMENTITEM]') AND name = N'APARTINVENTORYADJUSTMENTIT_IDX1') " +
"CREATE INDEX APARTINVENTORYADJUSTMENTIT_IDX1 ON APARTINVENTORYADJUSTMENTITEM ( APARTINVENTORYADJUSTMENTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APARTSERIAL]') AND name = N'APARTSERIAL_IDX1') " +
"CREATE INDEX APARTSERIAL_IDX1 ON APARTSERIAL ( APARTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APARTSERIAL]') AND name = N'APARTSERIAL_IDX2') " +
"CREATE INDEX APARTSERIAL_IDX2 ON APARTSERIAL ( APARTWAREHOUSEID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APARTSERIAL]') AND name = N'APARTSERIAL_IDX3') " +
"CREATE INDEX APARTSERIAL_IDX3 ON APARTSERIAL ( APURCHASEORDERRECEIPTITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APURCHASEORDER]') AND name = N'APURCHASEORDER_IDX1') " +
"CREATE INDEX APURCHASEORDER_IDX1 ON APURCHASEORDER ( AVENDORID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APURCHASEORDERITEM]') AND name = N'APURCHASEORDERITEM_IDX1') " +
"CREATE INDEX APURCHASEORDERITEM_IDX1 ON APURCHASEORDERITEM ( APURCHASEORDERID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APURCHASEORDERRECEIPT]') AND name = N'APURCHASEORDERRECEIPT_IDX1') " +
"CREATE INDEX APURCHASEORDERRECEIPT_IDX1 ON APURCHASEORDERRECEIPT ( AVENDORID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[APURCHASEORDERRECEIPTITEM]') AND name = N'APURCHASEORDERRECEIPTITEM_IDX1') " +
"CREATE INDEX APURCHASEORDERRECEIPTITEM_IDX1 ON APURCHASEORDERRECEIPTITEM ( APURCHASEORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ARATE]') AND name = N'ARATE_IDX1') " +
"CREATE INDEX ARATE_IDX1 ON ARATE ( ACONTRACTRATE ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ASCHEDULEMARKER]') AND name = N'IDX_ASCHEDULEMARKER') " +
"CREATE INDEX IDX_ASCHEDULEMARKER ON ASCHEDULEMARKER ( ASTARTDATE ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ASEARCHKEY]') AND name = N'IDX_ASEARCHKEY') " +
"CREATE INDEX IDX_ASEARCHKEY ON ASEARCHKEY ( AWORDID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ASEARCHKEY]') AND name = N'IDX_ASEARCHKEY1') " +
"CREATE INDEX IDX_ASEARCHKEY1 ON ASEARCHKEY ( ASOURCEOBJECTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ASEARCHKEY]') AND name = N'IDX_ASEARCHKEY2') " +
"CREATE INDEX IDX_ASEARCHKEY2 ON ASEARCHKEY ( ASOURCEOBJECTTYPE ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ASERVICEBANK]') AND name = N'IDX_ASERVICEBANK') " +
"CREATE INDEX IDX_ASERVICEBANK ON ASERVICEBANK ( ACREATED ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ASERVICEBANK]') AND name = N'IDX_ASERVICEBANK1') " +
"CREATE INDEX IDX_ASERVICEBANK1 ON ASERVICEBANK ( AAPPLIESTOROOTOBJECTID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ATASKGROUPTASK]') AND name = N'ATASKGROUPTASK_IDX1') " +
"CREATE INDEX ATASKGROUPTASK_IDX1 ON ATASKGROUPTASK ( ATASKGROUPID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AUIEXPLORERBARLAYOUT]') AND name = N'IDX_AUIEXPLORERBARLAYOUT') " +
"CREATE INDEX IDX_AUIEXPLORERBARLAYOUT ON AUIEXPLORERBARLAYOUT ( AUSERID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AUIGRIDLAYOUT]') AND name = N'AUIGRIDLAYOUT_IDX1') " +
"CREATE INDEX AUIGRIDLAYOUT_IDX1 ON AUIGRIDLAYOUT ( AUSERID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AUIUSERFORMSETTING]') AND name = N'IDX_AUIUSERFORMSETTING') " +
"CREATE INDEX IDX_AUIUSERFORMSETTING ON AUIUSERFORMSETTING ( AFORMNAME ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AUIUSERGRIDLASTVIEW]') AND name = N'IDX_AUIUSERGRIDLASTVIEW1') " +
"CREATE INDEX IDX_AUIUSERGRIDLASTVIEW1 ON AUIUSERGRIDLASTVIEW ( AUSERID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AUSERRIGHT]') AND name = N'AUSERRIGHT_IDX1') " +
"CREATE INDEX AUSERRIGHT_IDX1 ON AUSERRIGHT ( ASECURITYGROUPID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AVENDOR]') AND name = N'IDX_AVENDOR') " +
"CREATE INDEX IDX_AVENDOR ON AVENDOR ( AVENDORTYPE ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDER]') AND name = N'IDX_AWORKORDER') " +
"CREATE INDEX IDX_AWORKORDER ON AWORKORDER ( AWORKORDERTYPE ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEM]') AND name = N'AWORKORDERITEM_IDX1') " +
"CREATE INDEX AWORKORDERITEM_IDX1 ON AWORKORDERITEM ( AWORKORDERID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMLABOR]') AND name = N'AWORKORDERITEMLABOR_IDX1') " +
"CREATE INDEX AWORKORDERITEMLABOR_IDX1 ON AWORKORDERITEMLABOR ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMMISCEXPENSE]') AND name = N'AWORKORDERITEMMISCEXPENSE_IDX1') " +
"CREATE INDEX AWORKORDERITEMMISCEXPENSE_IDX1 ON AWORKORDERITEMMISCEXPENSE ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMOUTSIDESERVICE]') AND name = N'AWORKORDERITEMOUTSIDESERVI_IDX1') " +
"CREATE INDEX AWORKORDERITEMOUTSIDESERVI_IDX1 ON AWORKORDERITEMOUTSIDESERVICE ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMPART]') AND name = N'AWORKORDERITEMPART_IDX1') " +
"CREATE INDEX AWORKORDERITEMPART_IDX1 ON AWORKORDERITEMPART ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMPARTREQUEST]') AND name = N'AWORKORDERITEMPARTREQUEST_IDX1') " +
"CREATE INDEX AWORKORDERITEMPARTREQUEST_IDX1 ON AWORKORDERITEMPARTREQUEST ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMSCHEDULEDUSER]') AND name = N'AWORKORDERITEMSCHEDULEDUSE_IDX1') " +
"CREATE INDEX AWORKORDERITEMSCHEDULEDUSE_IDX1 ON AWORKORDERITEMSCHEDULEDUSER ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMSCHEDULEDUSER]') AND name = N'IDX_AWORKORDERITEMSCHEDULEDUSER') " +
"CREATE INDEX IDX_AWORKORDERITEMSCHEDULEDUSER ON AWORKORDERITEMSCHEDULEDUSER ( ASTARTDATE ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMTASK]') AND name = N'AWORKORDERITEMTASK_IDX1') " +
"CREATE INDEX AWORKORDERITEMTASK_IDX1 ON AWORKORDERITEMTASK ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERITEMTRAVEL]') AND name = N'AWORKORDERITEMTRAVEL_IDX1') " +
"CREATE INDEX AWORKORDERITEMTRAVEL_IDX1 ON AWORKORDERITEMTRAVEL ( AWORKORDERITEMID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERPREVENTIVEMAINTENANCE]') AND name = N'AWORKORDERPREVENTIVEMAINTE_IDX1') " +
"CREATE INDEX AWORKORDERPREVENTIVEMAINTE_IDX1 ON AWORKORDERPREVENTIVEMAINTENANCE ( AWORKORDERID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERQUOTE]') AND name = N'AWORKORDERQUOTE_IDX1') " +
"CREATE INDEX AWORKORDERQUOTE_IDX1 ON AWORKORDERQUOTE ( AWORKORDERID ) ");
DDL("IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[AWORKORDERSERVICE]') AND name = N'AWORKORDERSERVICE_IDX1') " +
"CREATE INDEX AWORKORDERSERVICE_IDX1 ON AWORKORDERSERVICE ( AWORKORDERID ) ");
nSchemaLevel = 36;
}
#endregion
#region Version 37 (localized text updates only
if (nSchemaLevel < 37)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 37
nSchemaLevel = 37;
}
#endregion
#region Version 38 (localized text updates only
if (nSchemaLevel < 38)
{
//Do nothing else here except advance schema version so localized text
//below can kick in for 38
nSchemaLevel = 38;
}
#endregion
#region Version 39 (localized text updates only
if (nSchemaLevel < 39) { nSchemaLevel = 39; }
#endregion
#region Version 40
if (nSchemaLevel < 40)
{
//Case 476
DDL("DELETE FROM APARTBYWAREHOUSEINVENTORY WHERE " +
"AQUANTITYONHAND=0 AND AQUANTITYONORDER=0 AND AMINSTOCKLEVEL=0 AND AQTYONORDERCOMMITTED=0 ");
//Case 563
DDL("ALTER TABLE APARTBYWAREHOUSEINVENTORY DROP COLUMN AACTIVE");
nSchemaLevel = 40;
}
#endregion
#region Version 41 (localized text updates only
if (nSchemaLevel < 41) { nSchemaLevel = 41; }
#endregion
#region Version 42 new table
if (nSchemaLevel < 42)
{
DDL(
"CREATE TABLE [dbo].[AUSERMRU] ( " +
" [AID] [uniqueidentifier] NOT NULL , " +
" [ACREATED] [datetime] NOT NULL , " +
" [AUSERID] [uniqueidentifier] NOT NULL , " +
" [AOBJECTID] [uniqueidentifier] NOT NULL , " +
" [AOBJECTTYPE] [smallint] NOT NULL " +
") ON [PRIMARY] "
);
nSchemaLevel = 42;
}
#endregion
#region Version 43 (localized text updates only
if (nSchemaLevel < 43) { nSchemaLevel = 43; }
#endregion
#region Version 44 (add column to user table)
if (nSchemaLevel < 44)
{
DDL("ALTER TABLE dbo.AUSER ADD ALASTSCHEDGROUPID uniqueidentifier NOT NULL CONSTRAINT DF_AUSER_ALASTSCHEDGROUPID DEFAULT '{A51ECBE7-792F-45bc-A88D-B16E7E6B1CDD}'");
nSchemaLevel = 44;
}
#endregion
#region Version 45 (add column to workorder table)
if (nSchemaLevel < 45)
{
DDL("ALTER TABLE dbo.AWORKORDER DROP COLUMN ATEMPLATE");
DDL("ALTER TABLE dbo.AWORKORDER DROP COLUMN ATEMPLATEID");
DDL("ALTER TABLE dbo.AWORKORDER ADD [ATEMPLATEDESCRIPTION] [nvarchar] (255) NULL");
nSchemaLevel = 45;
}
#endregion
#region Version 46 (add template columns, drop deprecated ones)
if (nSchemaLevel < 46)
{
//USER
DDL("ALTER TABLE dbo.AUSER DROP COLUMN AWORKORDERTEMPLATE");
DDL("ALTER TABLE dbo.AUSER DROP COLUMN AQUOTETEMPLATE");
DDL("ALTER TABLE dbo.AUSER DROP COLUMN APURCHASEORDERTEMPLATE");
DDL("ALTER TABLE dbo.AUSER ADD ADEFAULTSERVICETEMPLATEID uniqueidentifier NULL");
DDL("ALTER TABLE AUSER ADD CONSTRAINT FK_USERTEMPLATE " +
"FOREIGN KEY ( ADEFAULTSERVICETEMPLATEID ) REFERENCES " +
"AWORKORDER ( AID )");
//CLIENT
DDL("ALTER TABLE dbo.ACLIENT DROP COLUMN ASERVICETEMPLATEID");
DDL("ALTER TABLE dbo.ACLIENT ADD ADEFAULTSERVICETEMPLATEID uniqueidentifier NULL");
DDL("ALTER TABLE ACLIENT ADD CONSTRAINT FK_CLIENTTEMPLATE " +
"FOREIGN KEY ( ADEFAULTSERVICETEMPLATEID ) REFERENCES " +
"AWORKORDER ( AID )");
//GLOBAL
DDL("ALTER TABLE dbo.AGLOBAL DROP COLUMN AWORKORDERTEMPLATE");
DDL("ALTER TABLE dbo.AGLOBAL DROP COLUMN AQUOTETEMPLATE");
DDL("ALTER TABLE dbo.AGLOBAL DROP COLUMN APURCHASEORDERTEMPLATE");
DDL("ALTER TABLE dbo.AGLOBAL ADD ADEFAULTSERVICETEMPLATEID uniqueidentifier NULL");
DDL("ALTER TABLE AGLOBAL ADD CONSTRAINT FK_GLOBALTEMPLATE " +
"FOREIGN KEY ( ADEFAULTSERVICETEMPLATEID ) REFERENCES " +
"AWORKORDER ( AID )");
//REGION - UNUSED
DDL("ALTER TABLE dbo.AREGION DROP COLUMN AWORKORDERTEMPLATE");
DDL("ALTER TABLE dbo.AREGION DROP COLUMN AQUOTETEMPLATE");
DDL("ALTER TABLE dbo.AREGION DROP COLUMN APURCHASEORDERTEMPLATE");
nSchemaLevel = 46;
}
#endregion
#region Version 47 (localized text updates only
if (nSchemaLevel < 47) { nSchemaLevel = 47; }
#endregion
#region Version 48 (Case 432 contactnotes)
if (nSchemaLevel < 48)
{
DDL("ALTER TABLE ACLIENT ADD ACONTACTNOTES ntext");
DDL("ALTER TABLE ACLIENT ADD ACONTACT nvarchar(500) NULL");
DDL("ALTER TABLE ACLIENT ADD APHONE1 nvarchar(255) NULL");
DDL("ALTER TABLE ACLIENT ADD APHONE2 nvarchar(255) NULL");
DDL("ALTER TABLE ACLIENT ADD APHONE3 nvarchar(255) NULL");
DDL("ALTER TABLE ACLIENT ADD APHONE4 nvarchar(255) NULL");
DDL("ALTER TABLE ACLIENT ADD APHONE5 nvarchar(255) NULL");
DDL("ALTER TABLE ACLIENT ADD AEMAIL nvarchar(255) NULL");
DDL("ALTER TABLE AVENDOR ADD ACONTACTNOTES ntext");
DDL("ALTER TABLE AVENDOR ADD ACONTACT nvarchar(500) NULL");
DDL("ALTER TABLE AVENDOR ADD APHONE1 nvarchar(255) NULL");
DDL("ALTER TABLE AVENDOR ADD APHONE2 nvarchar(255) NULL");
DDL("ALTER TABLE AVENDOR ADD APHONE3 nvarchar(255) NULL");
DDL("ALTER TABLE AVENDOR ADD APHONE4 nvarchar(255) NULL");
DDL("ALTER TABLE AVENDOR ADD APHONE5 nvarchar(255) NULL");
DDL("ALTER TABLE AVENDOR ADD AEMAIL nvarchar(255) NULL");
DDL("ALTER TABLE AHEADOFFICE ADD ACONTACTNOTES ntext");
DDL("ALTER TABLE AHEADOFFICE ADD ACONTACT nvarchar(500) NULL");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE1 nvarchar(255) NULL");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE2 nvarchar(255) NULL");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE3 nvarchar(255) NULL");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE4 nvarchar(255) NULL");
DDL("ALTER TABLE AHEADOFFICE ADD APHONE5 nvarchar(255) NULL");
DDL("ALTER TABLE AHEADOFFICE ADD AEMAIL nvarchar(255) NULL");
nSchemaLevel = 48;
}
#endregion
#region Version 49 (Migrate contact data)
if (nSchemaLevel < 49) { nSchemaLevel = 49; }
#endregion
#region Version 50 (Case 71 follow ups)
if (nSchemaLevel < 50)
{
DDL("ALTER TABLE ASCHEDULEMARKER ADD AFOLLOWID uniqueidentifier");
DDL("ALTER TABLE ASCHEDULEMARKER ADD AFOLLOWTYPE smallint");
//add index
DDL(
"CREATE INDEX [IDX_FOLLOWID] ON [dbo].[ASCHEDULEMARKER]([AFOLLOWID]) ON [PRIMARY]"
);
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='ClientInfo'");
nSchemaLevel = 50;
}
#endregion
#region Version 51 (Case 71 follow ups)
if (nSchemaLevel < 51)
{
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='WorkorderInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='HeadOfficeInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='UnitInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='VendorInfo'");
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0 WHERE AFORMNAME='ContractInfo'");
nSchemaLevel = 51;
}
#endregion
#region Version 52 (localized text updates only
if (nSchemaLevel < 52) { nSchemaLevel = 52; }
#endregion
#region Version 53 (localized text updates only
if (nSchemaLevel < 53) { nSchemaLevel = 53; }
#endregion
#region Version 54 (Case 619)
if (nSchemaLevel < 54)
{
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ClientRequestPart'");
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ClientRequestTech'");
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ClientServiceRequestItem'");
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.ContractPart'");
nSchemaLevel = 54;
}
#endregion
#region Version 55 (Case 618)
if (nSchemaLevel < 55)
{
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.UserRight'");
nSchemaLevel = 55;
}
#endregion
#region Version 56 (localized text updates only
if (nSchemaLevel < 56) { nSchemaLevel = 56; }
#endregion
#region Version 57 (add column to user table)
if (nSchemaLevel < 57)
{
DDL("ALTER TABLE dbo.AUSER DROP CONSTRAINT DF_AUSER_ALASTSCHEDGROUPID");
DDL("ALTER TABLE dbo.AUSER DROP COLUMN ALASTSCHEDGROUPID");
DDL("ALTER TABLE dbo.AUSER ADD ALASTSCHEDGROUPID uniqueidentifier NULL CONSTRAINT DF_AUSER_ALASTSCHEDGROUPID DEFAULT '{A51ECBE7-792F-45bc-A88D-B16E7E6B1CDD}'");
nSchemaLevel = 57;
}
#endregion
#region Version 58 (localized text updates only
if (nSchemaLevel < 58) { nSchemaLevel = 58; }
#endregion
#region Version 59 (localized text updates only
if (nSchemaLevel < 59) { nSchemaLevel = 59; }
#endregion
#region Version 60 (Update contract expiry dates if null)
if (nSchemaLevel < 60) { nSchemaLevel = 60; }
#endregion
#region MSSQL AyaNova 5.0
#region Version 61 (add region column to various tables)
if (nSchemaLevel < 61)
{
DDL("ALTER TABLE ACONTRACT ADD AREGIONID uniqueidentifier DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}' NOT NULL");
DDL("ALTER TABLE ACONTRACT ADD CONSTRAINT FK_CONTRACTREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE ALOANITEM ADD AREGIONID uniqueidentifier DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}' NOT NULL");
DDL("ALTER TABLE ALOANITEM ADD CONSTRAINT FK_LOANREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE ADISPATCHZONE ADD AREGIONID uniqueidentifier DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}' NOT NULL");
DDL("ALTER TABLE ADISPATCHZONE ADD CONSTRAINT FK_ZONEREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE APROJECT ADD AREGIONID uniqueidentifier DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}' NOT NULL");
DDL("ALTER TABLE APROJECT ADD CONSTRAINT FK_PROJECTREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE ARATE ADD AREGIONID uniqueidentifier DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}' NOT NULL");
DDL("ALTER TABLE ARATE ADD CONSTRAINT FK_RATEREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE AREPORT ADD AREGIONID uniqueidentifier DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}' NOT NULL");
DDL("ALTER TABLE AREPORT ADD CONSTRAINT FK_REPORTREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
DDL("ALTER TABLE APARTWAREHOUSE ADD AREGIONID uniqueidentifier DEFAULT '{8236E8D1-CAB1-4797-9C34-93861954AE6A}' NOT NULL");
DDL("ALTER TABLE APARTWAREHOUSE ADD CONSTRAINT FK_WHSREGION FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
nSchemaLevel = 61;
}
#endregion
#region Version 62 WIKI stuff case 73
if (nSchemaLevel < 62)
{
DDL(
"CREATE TABLE [dbo].[AWIKIPAGE] ( " +
" [AID] [uniqueidentifier] NOT NULL , " +
" [ACREATED] [datetime] NULL , " +
" [AMODIFIED] [datetime] NULL , " +
" [ACREATOR] [uniqueidentifier] NULL , " +
" [AMODIFIER] [uniqueidentifier] NULL , " +
" [AROOTOBJECTID] [uniqueidentifier] NOT NULL , " +
" [AROOTOBJECTTYPE] [smallint] NOT NULL , " +
" [ATITLE] [nvarchar] (255) NOT NULL , " +
" [AWOBJECT] [image] NULL , " +
" [AWOBJECTSIZE] [int] NULL , " +
" [AINTERNALONLY] [bit] NOT NULL , " +
") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
//add pk
DDL(
"ALTER TABLE [dbo].[AWIKIPAGE] ADD " +
" PRIMARY KEY NONCLUSTERED " +
" ( " +
" [AID] " +
" ) ON [PRIMARY] "
);
//Add index
DDL(
"CREATE INDEX [IDX_AWIKI1] ON [dbo].[AWIKIPAGE]([AROOTOBJECTID]) ON [PRIMARY]"
);
DDL(
"CREATE TABLE [dbo].[AFILE] ( " +
" [AID] [uniqueidentifier] NOT NULL , " +
" [ACREATED] [datetime] NOT NULL , " +
" [AMODIFIED] [datetime] NOT NULL , " +
" [ACREATOR] [uniqueidentifier] NOT NULL , " +
" [AMODIFIER] [uniqueidentifier] NOT NULL , " +
" [AROOTOBJECTID] [uniqueidentifier] NOT NULL , " +
" [AROOTOBJECTTYPE] [smallint] NOT NULL , " +
" [AFILETYPE] [smallint] NOT NULL , " +
" [ANAME] [nvarchar] (255) NULL , " +
" [AFILESIZE] [int] NULL, " +
" [AFOBJECT] [image] NULL , " +
" [AFOBJECTSIZE] [int] NULL , " +
") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
nSchemaLevel = 62;
}
#endregion schema 62
#region Version 63 WIKI rights case 73
if (nSchemaLevel < 63)
{
AddNewUserRightToAllSecurityGroups("Object.WikiPage", SecurityLevelTypes.ReadWriteDelete);
AddNewUserRightToAllSecurityGroups("Object.AyaFile", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 63;
}
#endregion
#region Version 64 WIKI global.maxfileuploadsize case 73
if (nSchemaLevel < 64)
{
DDL("ALTER TABLE dbo.AGLOBAL ADD AMAXFILESIZEMB int NULL");
nSchemaLevel = 64;
}
#endregion
#region Version 65 (localized text updates only case 73
if (nSchemaLevel < 65) { nSchemaLevel = 65; }
#endregion
#region Version 66 Global WIKI rights case 73
if (nSchemaLevel < 66)
{
AddNewUserRightToAllSecurityGroups("Object.GlobalWikiPage", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 66;
}
#endregion
#region Version 67 (localized text updates only case 73
if (nSchemaLevel < 67) { nSchemaLevel = 67; }
#endregion
#region Version 68 blow away all toolbar and explorer bar saved settings rights case 73
if (nSchemaLevel < 68)
{
//blow away all toolbar settings
//so new wiki item shows up
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 68;
}
#endregion
#region Version 69 (localized text updates only case 73
if (nSchemaLevel < 69) { nSchemaLevel = 69; }
#endregion
#region Version 70 blow away all toolbar and explorer bar saved settings for new icons case 918
if (nSchemaLevel < 70)
{
//blow away all toolbar settings
//so new wiki item shows up
DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 70;
}
#endregion
#region Version 71 CLIENT NOTIFICATION case 53
if (nSchemaLevel < 71)
{//[test] [bit] NOT NULL CONSTRAINT [DF_ACLIENT_test] DEFAULT ((1)),
//CREATE CLIENT NOTIFICATION EVEN TABLE
DDL(
"CREATE TABLE ACLIENTNOTIFYEVENT ( " +
" AID uniqueidentifier NOT NULL, " +
" ACREATED datetime, " +
" AMODIFIED datetime, " +
" ACREATOR uniqueidentifier, " +
" AMODIFIER uniqueidentifier, " +
" ACLIENTID uniqueidentifier NOT NULL, " +
" ADELIVERAFTER datetime, " +
" AOBJECT image, " +
" AOBJECTSIZE int) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] "
);
//ADD FIELD TO DELIVERY LOG FOR THIS TYPE OF DELIVERY
DDL("ALTER TABLE ANOTIFYDELIVERYLOG ADD ATOCLIENTID uniqueidentifier");
//ADD NOTIFICATION FIELDS TO REGION OBJECT
DDL("ALTER TABLE AREGION ADD ACLIENTNOTIFICATION bit NOT NULL CONSTRAINT [DF_AREGION_ACLIENTNOTIFICATION] DEFAULT ((0))");
DDL("ALTER TABLE AREGION ADD AREPLYTOEMAIL nvarchar(512)");
DDL("ALTER TABLE AREGION ADD AWBIURL nvarchar(512)");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRACCEPTED bit");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRMSG ntext");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRREJECTED bit");
DDL("ALTER TABLE AREGION ADD ANOTIFYCSRREJECTMSG ntext");
DDL("ALTER TABLE AREGION ADD ANOTIFYNEWWO bit");
DDL("ALTER TABLE AREGION ADD ANOTIFYNEWWOMSG ntext");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOSTATUS bit");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOSTATMSG ntext");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOSTATUSID uniqueidentifier");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSED bit");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSEDMSG ntext");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSEDATTACHWO bit");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOCLOSEDRPT uniqueidentifier");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOFOLLOWUP bit");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOFOLLOWUPMSG ntext");
DDL("ALTER TABLE AREGION ADD ANOTIFYWOFOLLOWUPDAYS INTEGER");
//ADD FIELD FOR NOTIFICATION TO CLIENT OBJECT
DDL("ALTER TABLE ACLIENT ADD ASENDNOTIFICATIONS bit NOT NULL CONSTRAINT [DF_AREGION_ASENDNOTIFICATIONS] DEFAULT ((1))");
nSchemaLevel = 71;
}
#endregion
#region Version 72 (localized text updates only case 53
if (nSchemaLevel < 72) { nSchemaLevel = 72; }
#endregion
#region Version 73 (localized text updates only case 29
if (nSchemaLevel < 73) { nSchemaLevel = 73; }
#endregion
#region Version 74 PROJECT ON PO CASE 49
if (nSchemaLevel < 74)
{
DDL("ALTER TABLE APURCHASEORDER ADD APROJECTID uniqueidentifier");
DDL("ALTER TABLE APURCHASEORDER ADD CONSTRAINT FK_POPROJECT FOREIGN KEY (APROJECTID) REFERENCES APROJECT(AID);");
nSchemaLevel = 74;
}
#endregion
#region Version 75 CASE 78 NEW TEXT FIELDS FOR UNIT AND PORECEIPT
if (nSchemaLevel < 75)
{
DDL("ALTER TABLE AUNIT ADD ATEXT1 NVARCHAR(255)");
DDL("ALTER TABLE AUNIT ADD ATEXT2 NVARCHAR(255)");
DDL("ALTER TABLE AUNIT ADD ATEXT3 NVARCHAR(255)");
DDL("ALTER TABLE AUNIT ADD ATEXT4 NVARCHAR(255)");
DDL("ALTER TABLE APURCHASEORDERRECEIPT ADD ATEXT1 NVARCHAR(255)");
DDL("ALTER TABLE APURCHASEORDERRECEIPT ADD ATEXT2 NVARCHAR(255)");
nSchemaLevel = 75;
}
#endregion
#region Version 76 CASE 251 banked travel
if (nSchemaLevel < 76)
{
DDL("ALTER TABLE AWORKORDERITEMTRAVEL ADD ASERVICEBANKID uniqueidentifier");
DDL("ALTER TABLE AWORKORDERITEMTRAVEL ADD CONSTRAINT FK_WOIT_SBANK FOREIGN KEY (ASERVICEBANKID) REFERENCES ASERVICEBANK(AID);");
nSchemaLevel = 76;
}
#endregion
#region Version 77 (localized text updates only case 866 generate unit from workorder part
if (nSchemaLevel < 77) { nSchemaLevel = 77; }
#endregion
#region Version 78 case 816
if (nSchemaLevel < 78)
{
DDL("ALTER TABLE dbo.AGLOBAL ADD aLaborSchedUserDfltTimeSpan INTEGER NOT NULL DEFAULT ((60))");
DDL("ALTER TABLE dbo.AGLOBAL ADD aTravelDfltTimeSpan INTEGER NOT NULL DEFAULT ((60))");
nSchemaLevel = 78;
}
#endregion
#region Version 79 (localized text updates only case 984
if (nSchemaLevel < 79) { nSchemaLevel = 79; }
#endregion
#region Version 80 (localized text updates only case 764, case 765
if (nSchemaLevel < 80) { nSchemaLevel = 80; }
#endregion
#region Version 81 CASE 36 report security group restriction
if (nSchemaLevel < 81)
{
DDL("ALTER TABLE AREPORT ADD ASECURITYGROUPID uniqueidentifier");
nSchemaLevel = 81;
}
#endregion
#region Version 82 (localized text updates only case 1011
if (nSchemaLevel < 82) { nSchemaLevel = 82; }
#endregion
#region Version 83 case 1038 new toolbar layout saving
if (nSchemaLevel < 83)
{
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN AFORMWIDTH");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN AFORMHEIGHT");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN ASPLITPOSITION1");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN ASPLITPOSITION2");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN ALOCATIONX");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN ALOCATIONY");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN ATOOLBARMANAGERLAYOUTSIZE");
DDL("ALTER TABLE AUIUSERFORMSETTING DROP COLUMN ATOOLBARMANAGERLAYOUTCONTENT");
DDL("ALTER TABLE AUIUSERFORMSETTING ADD ALAYOUT NTEXT");
nSchemaLevel = 83;
}
#endregion
#region Version 84 (localized text updates only case 829)
if (nSchemaLevel < 84) { nSchemaLevel = 84; }
#endregion
#region Version 85 (localized text updates only case 864)
if (nSchemaLevel < 85) { nSchemaLevel = 85; }
#endregion
#region Version 86 //CASE 848
if (nSchemaLevel < 86)
{
DDL("ALTER TABLE ACLIENTSERVICEREQUEST ADD AREQUESTEDBY NVARCHAR(255)");
nSchemaLevel = 86;
}
#endregion
#region Version 87 (localized text updates only case 857)
if (nSchemaLevel < 87) { nSchemaLevel = 87; }
#endregion
#endregion MSSQL ayanova 5.0
#region MSSQL AyaNova 6.0
#region Version 88 (localized text updates only case 1204)
if (nSchemaLevel < 88) { nSchemaLevel = 88; }
#endregion
#region Version 89 case 1136
if (nSchemaLevel < 89)
{
DDL("ALTER TABLE AGLOBAL ADD aNotifyEncryption NVARCHAR(255)");
nSchemaLevel = 89;
}
#endregion
#region Version 90 case 1219
if (nSchemaLevel < 90)
{
DDL("ALTER TABLE AUSER ADD ALASTSCHEDSTARTDATE datetime");
DDL("ALTER TABLE AUSER ADD ALASTSCHEDSTOPDATE datetime");
DDL("ALTER TABLE AUSER ADD ALASTSCHEDVIEW SMALLINT");
nSchemaLevel = 90;
}
#endregion
#region Version 91 (Case 1163)
if (nSchemaLevel < 91)
{
//9999=empty
DDL("ALTER TABLE AUSER ADD ATIMEZONEOFFSET DECIMAL(19,5) DEFAULT 9999 NOT NULL");
nSchemaLevel = 91;
}
#endregion
#region Version 92 (Case 1290)
if (nSchemaLevel < 92)
{
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DDL("CREATE CLUSTERED INDEX IDX6_ASERVICEBANK_CREAT ON dbo.ASERVICEBANK (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AVENDOR_CVR ON dbo.AVENDOR (AID)INCLUDE (ANAME) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AUSRREGION ON dbo.AUSER (AID) INCLUDE ( AREGIONID) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_APROJECTIDNAME ON dbo.APROJECT (AID) INCLUDE (ANAME) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_ACLIENT_CLIENTSELECTOR ON dbo.ACLIENT (ANAME) INCLUDE ( AID, AACTIVE, AREGIONID) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_ACLIENTDISPZN ON dbo.ACLIENT (AID,ADISPATCHZONEID) INCLUDE (ANAME) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWO ON dbo.AWORKORDER (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AWORKORDER_CVR ON dbo.AWORKORDER " +
"( " +
" AWORKORDERTYPE, " +
" AID, " +
" APROJECTID, " +
" AFROMPMID, " +
" AFROMQUOTEID, " +
" AWORKORDERCATEGORYID, " +
" ACLIENTID " +
") " +
"INCLUDE ( ACREATED, " +
"AMODIFIED, " +
"AINTERNALREFERENCENUMBER, " +
"ACUSTOMERREFERENCENUMBER, " +
"AONSITE, " +
"ACUSTOMERCONTACTNAME, " +
"ASUMMARY, " +
"ACLOSED, " +
"ASERVICECOMPLETED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AUNITMODEL_CVR2 ON dbo.AUNITMODEL (AUNITMODELCATEGORYID, AID, AVENDORID) INCLUDE ( ANAME) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AUNITMODELIDVEND ON dbo.AUNITMODEL (AID,AVENDORID) INCLUDE (ANAME,AMODELNUMBER) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AUNIT_CVR ON dbo.AUNIT (AID,AUNITMODELID) INCLUDE (ASERIAL,APURCHASEDDATE,ATEXT1,ATEXT2,ATEXT3,ATEXT4) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOITEM ON dbo.AWORKORDERITEM (ACREATED) ");
DDL("CREATE CLUSTERED INDEX IDX6_ALOCALIZEDTEXT_CL ON dbo.ALOCALIZEDTEXT (ALOCALE,AKEY) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_ACLIENTNOTIFYEVENT_CREAT ON dbo.ACLIENTNOTIFYEVENT (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AADDRESS_CVR ON dbo.AADDRESS (AROOTOBJECTID,AADDRESSTYPE) " +
"INCLUDE ( ADELIVERYADDRESS,ACITY,ASTATEPROV,ACOUNTRYCODE,ACOUNTRY,APOSTAL,ALONGITUDE,ALATITUDE) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AGRIDFILTER_NAME ON dbo.AGRIDFILTER (ANAME) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_ASEARCHKEY ON dbo.ASEARCHKEY (AWORDID,ASOURCEOBJECTTYPE,ASOURCEOBJECTID) ");
DDL("CREATE CLUSTERED INDEX IDX6_ASEARCHDICTIONARY ON dbo.ASEARCHDICTIONARY (AWORD) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_ASEARCHDICTIONARY_NONCLUST ON dbo.ASEARCHDICTIONARY (AWORD) ");
DDL("CREATE CLUSTERED INDEX IDX6_ASCHEDULEMARKER_CVR ON dbo.ASCHEDULEMARKER (ASTARTDATE,ASTOPDATE) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOIMISCEXP ON dbo.AWORKORDERITEMMISCEXPENSE (ACREATED) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOILOA ON dbo.AWORKORDERITEMLOAN (ACREATED) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOSVC ON dbo.AWORKORDERSERVICE (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AWORKORDERSERVICE_CVR ON dbo.AWORKORDERSERVICE (AWORKORDERID) " +
"INCLUDE ( AWORKORDERSTATUSID,ASERVICEDATE,AINVOICENUMBER,ASERVICENUMBER,ACLOSEBYDATE) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOIOUT ON dbo.AWORKORDERITEMOUTSIDESERVICE (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AWOIOUTSIDESERVICECVR ON dbo.AWORKORDERITEMOUTSIDESERVICE (AWORKORDERITEMID,AVENDORSENTTOID,AVENDORSENTVIAID) " +
"INCLUDE ( ARMANUMBER,ATRACKINGNUMBER,AREPAIRCOST,AREPAIRPRICE,ASHIPPINGCOST,ASHIPPINGPRICE,ADATESENT,ASENDERUSERID,ADATEETA,ADATERETURNED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_ANOTIFYEVENT_APPLIESTO ON dbo.ANOTIFYEVENT (AAPPLIESTOUSERID) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_APART_4INVENT ON dbo.APART " +
"(AID,APARTASSEMBLYID,APARTCATEGORYID,AALTERNATIVEWHOLESALERID,AWHOLESALERID,AMANUFACTURERID,APARTNUMBER,AACTIVE,ARETAIL,ACOST) " +
"INCLUDE (ANAME,AUPC) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_APART_CVR ON dbo.APART (AID,APARTASSEMBLYID,APARTCATEGORYID,AMANUFACTURERID) " +
"INCLUDE (ANAME,APARTNUMBER,AUPC) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOIPRTRQST ON dbo.AWORKORDERITEMPARTREQUEST (ACREATED) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOIPRT ON dbo.AWORKORDERITEMPART (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AWORKORDERITEMPARTCVR ON dbo.AWORKORDERITEMPART (AWORKORDERITEMID,APARTSERIALID,APARTWAREHOUSEID,APARTID) " +
"INCLUDE (AID,AQUANTITY,ACOST,APRICE,ADISCOUNT,ADESCRIPTION,AUSED,ATAXPARTSALEID,AQUANTITYRESERVED) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOITRVL ON dbo.AWORKORDERITEMTRAVEL (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AWORKORDERITEMTRAVEL_CVR ON dbo.AWORKORDERITEMTRAVEL (AWORKORDERITEMID) " +
"INCLUDE (AID,AUSERID,ATRAVELSTARTDATE,ATRAVELSTOPDATE,ATRAVELRATEID,ATRAVELDETAILS,ATRAVELRATEQUANTITY,ANOCHARGEQUANTITY,ADISTANCE,ATAXRATESALEID) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOISCHEDUSR ON dbo.AWORKORDERITEMSCHEDULEDUSER (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AWORKORDERITEMSCHEDULEDUSER_CVR ON dbo.AWORKORDERITEMSCHEDULEDUSER (AWORKORDERITEMID) " +
"INCLUDE ( AID,AUSERID,AESTIMATEDQUANTITY,ASTARTDATE,ASTOPDATE,ASERVICERATEID) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_AWOISCHEDULEDUSER_CVR2 ON dbo.AWORKORDERITEMSCHEDULEDUSER (ASTOPDATE,ASTARTDATE,AWORKORDERITEMID) " +
"INCLUDE ( AID,AUSERID) ");
DDL("CREATE CLUSTERED INDEX IDX6_AWOILAB ON dbo.AWORKORDERITEMLABOR (ACREATED) ");
DDL("CREATE NONCLUSTERED INDEX IDX6_APARTBYWAREHOUSEINVENTORY_APARTID ON dbo.APARTBYWAREHOUSEINVENTORY (APARTID) ");
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nSchemaLevel = 92;
}
#endregion
#region Version 93 (localized text updates only case 812)
if (nSchemaLevel < 93) { nSchemaLevel = 93; }
#endregion
#region Version 94 case 812
if (nSchemaLevel < 94)
{
DDL("ALTER TABLE ANOTIFYEVENT ADD ASAVEDMESSAGE nvarchar(1024)");
nSchemaLevel = 94;
}
#endregion
#region Version 95 (localized text updates only case 812)
if (nSchemaLevel < 95) { nSchemaLevel = 95; }
#endregion
#endregion MSSQL ayanova 6.0
#region MSSQL AyaNova 6.2
#region Version 96 case 1348
if (nSchemaLevel < 96)
{
DDL("UPDATE J " +
"SET J.ACREATOR='2ECC77FC-69E2-4A7E-B88D-BD0ECAF36AED' " +
"FROM " +
"AWORKORDERITEMPARTREQUEST J " +
"LEFT JOIN AUSER N ON N.AID = J.ACREATOR " +
"WHERE N.AID IS NULL ");
DDL(
"ALTER TABLE [dbo].[AWORKORDERITEMPARTREQUEST] ADD " +
" CONSTRAINT [FK_WOIPTRQST_CREATOR] FOREIGN KEY " +
" ( " +
" [ACREATOR] " +
" ) REFERENCES [dbo].[AUSER] ( " +
" [AID] " +
" ) "
);
nSchemaLevel = 96;
}
#endregion
#region Version 97 case 1357 and case 1380
if (nSchemaLevel < 97)
{
DDL(
"ALTER TABLE AWORKORDERITEMLOAN DROP COLUMN AACTIVE;"
);//case 1357
DDL("ALTER TABLE ANOTIFYEVENT ALTER COLUMN ASAVEDMESSAGE NVARCHAR(1024) NULL");//case 1380
nSchemaLevel = 97;
}
#endregion
#region Version 98 case 1382
if (nSchemaLevel < 98)
{
DDL("ALTER TABLE ANOTIFYEVENT ADD ACREATED datetime NULL");
nSchemaLevel = 98;
}
#endregion
#region Version 99 case 1382
if (nSchemaLevel < 99)
{
DDL("ALTER TABLE AGLOBAL ADD ASMTPRETRY BIT");
nSchemaLevel = 99;
}
#endregion
#endregion mssql ayanova 6.2
#endregion old schema updates
#region MSSQL AyaNova 7.0
#region Version 100 case 1194
if (nSchemaLevel < 100)
{
DDL("ALTER TABLE AGLOBAL ADD AFORMCUSTOM NTEXT");
nSchemaLevel = 100;
}
#endregion
#region Version 101 Object.WorkorderItemUnit right case 1317
if (nSchemaLevel < 101)
{
AddNewUserRightToAllSecurityGroups("Object.WorkorderItemUnit", SecurityLevelTypes.ReadWriteDelete);
nSchemaLevel = 101;
}
#endregion
#region Version 102 remove object.Workorder right per case 1387
if (nSchemaLevel < 102)
{
DDLNoUpper("DELETE FROM AUSERRIGHT WHERE ARIGHT='Object.Workorder'");
nSchemaLevel = 102;
}
#endregion
#region Version 103 case 1346
if (nSchemaLevel < 103)
{
DDL("ALTER TABLE AWORKORDERSERVICE ADD ASIGNATURE NTEXT");
DDL("ALTER TABLE AWORKORDERSERVICE ADD ASIGNED DATETIME NULL");
nSchemaLevel = 103;
}
#endregion
#region Version 104 case 1346
if (nSchemaLevel < 104)
{
DDL("ALTER TABLE AGLOBAL ADD ASIGNATURETITLE NTEXT");
DDL("ALTER TABLE AGLOBAL ADD ASIGNATUREHEADER NTEXT");
DDL("ALTER TABLE AGLOBAL ADD ASIGNATUREFOOTER NTEXT");
nSchemaLevel = 104;
}
#endregion
#region Version 105 zap explorer bar layout and localized text updates case 1394
if (nSchemaLevel < 105) { nSchemaLevel = 105; }
#endregion
#region Version 106 case 1394
if (nSchemaLevel < 106)
{
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 106;
}
#endregion
#region Version 107 (localized text updates only case 1446, case 1519
if (nSchemaLevel < 107) { nSchemaLevel = 107; }
#endregion
#region Version 108 case 1553
if (nSchemaLevel < 108)
{
DDL("ALTER TABLE AUSER ADD AMAINGRIDLASTROWCOUNT INT");
DDL("ALTER TABLE AUSER ADD ASCHEDULELASTVIEWOPENONLY BIT");
DDL("ALTER TABLE AUSER ADD ASCHEDULELASTPRINTSETTINGS NTEXT");
nSchemaLevel = 108;
}
#endregion
#region Version 109 case 1392
if (nSchemaLevel < 109)
{
DDL("ALTER TABLE AGLOBAL ADD ASCHEDUSERNONTODAYSTARTTIME DATETIME NULL");
nSchemaLevel = 109;
}
#endregion
#region Version 110 case 1487
if (nSchemaLevel < 110)
{
DDL("ALTER TABLE AGLOBAL ADD AMAINGRIDAUTOREFRESH BIT");
nSchemaLevel = 110;
}
#endregion
#region Version 111 (localized text updates only case 1346)
if (nSchemaLevel < 111) { nSchemaLevel = 111; }
#endregion
#region Version 112 (localized text updates only case 1556)
if (nSchemaLevel < 112) { nSchemaLevel = 112; }
#endregion
#region Version 113 (localized text updates only case 1140)
if (nSchemaLevel < 113) { nSchemaLevel = 113; }
#endregion
#region Version 114 (case 1151)
if (nSchemaLevel < 114)
{
DDL(
" CREATE TABLE AREGIONNOTIFYSTAT ( " +
" AID UNIQUEIDENTIFIER NOT NULL, " +
" AREGIONID UNIQUEIDENTIFIER NOT NULL, " +
" ACREATED DATETIME, " +
" AMODIFIED DATETIME, " +
" ACREATOR UNIQUEIDENTIFIER, " +
" AMODIFIER UNIQUEIDENTIFIER, " +
" AACTIVE BIT DEFAULT 0 NOT NULL, " +
" ANOTIFYWOSTATMSG NTEXT, " +
" ANOTIFYWOSTATUSID UNIQUEIDENTIFIER, " +
" AWOREPORTID UNIQUEIDENTIFIER " +
" ); "
);
DDL("ALTER TABLE AREGIONNOTIFYSTAT ADD CONSTRAINT FK_RGN_NTFY_STAT FOREIGN KEY (AREGIONID) REFERENCES AREGION(AID);");
nSchemaLevel = 114;
}
#endregion
#region Version 115 (case 1151)
if (nSchemaLevel < 115) { nSchemaLevel = 115; }
#endregion
#region Version 116 (case 1499)
if (nSchemaLevel < 116)
{
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATUS BIT");
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATMSG NTEXT");
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATUSTYPE SMALLINT");
DDL("ALTER TABLE AREGION ADD ANOTIFYQUOTESTATUSRPT UNIQUEIDENTIFIER");
nSchemaLevel = 116;
}
#endregion
#region Version 117 (localized text updates only case 1555)
if (nSchemaLevel < 117) { nSchemaLevel = 117; }
#endregion
#region Version 118 (Unit object updates only case 1687)
if (nSchemaLevel < 118) { nSchemaLevel = 118; }
#endregion
#endregion mssql aya 7
#region MSSQL AyaNova 7.2
#region Version 119 (Localized text updates only case 1805)
if (nSchemaLevel < 119) { nSchemaLevel = 119; }
#endregion
#region Version 120 case 1805
if (nSchemaLevel < 120)
{
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 120;
}
#endregion
#region Version 121 (Localized text updates only case 1805)
if (nSchemaLevel < 121) { nSchemaLevel = 121; }
#endregion
#region Version 122 (Localized text updates only case 1805)
if (nSchemaLevel < 122) { nSchemaLevel = 122; }
#endregion
#region Version 123 (Localized text updates only case 1805)
if (nSchemaLevel < 123) { nSchemaLevel = 123; }
#endregion
#region Version 124 (Localized text updates only case 1122)
if (nSchemaLevel < 124) { nSchemaLevel = 124; }
#endregion
#region Version 125 (Localized text updates only case 1810)
if (nSchemaLevel < 125) { nSchemaLevel = 125; }
#endregion
#region Version 126 (Localized text updates only case 1909)
if (nSchemaLevel < 126) { nSchemaLevel = 126; }
#endregion
#endregion mssql aya 7.2
#region MSSQL AyaNova 7.3
#region Version 127 (Localized text updates only case 1995)
if (nSchemaLevel < 127) { nSchemaLevel = 127; }
#endregion
#region Version 128 (Localized text updates only case 2067)
if (nSchemaLevel < 128) { nSchemaLevel = 128; }
#endregion
#endregion mssql v 7.3
#region MSSQL AyaNova 7.4
#region Version 129 (case 2094 Subscription licensing)
//reset all forms if the schema at the start was less than 119
//which is when Dashboard feature was added and is the last main
//item which could be missing from display due to old form settings
if (nSchemaLevelAtStart < 119)
{
//RESET explorer bar layout to catch any items not caught before
//DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
}
//case 2094
if (nSchemaLevel < 129) { nSchemaLevel = 129; }
#endregion
#endregion mssql v 7.4
#region MSSQL AyaNova 7.5
#region Version 130 (case 3150 new unit name display formats)
//case 3150
if (nSchemaLevel < 130) { nSchemaLevel = 130; }
#endregion
#region Version 131 (case 1968)
if (nSchemaLevel < 131)
{
//ALTER TABLE <table name> ADD <column name> BIT NOT NULL DEFAULT 0;
DDL("ALTER TABLE ASCHEDULEMARKER ADD ACOMPLETED BIT NOT NULL DEFAULT 0");
nSchemaLevel = 131;
}
#endregion
#region Version 132 (case 1968 schedmarker "completed")
//case 1968
if (nSchemaLevel < 132) { nSchemaLevel = 132; }
#endregion
#region Version 133 blow explorer bar saved settings case 1967
//case 1967
if (nSchemaLevel < 133)
{
//DDLNoUpper("UPDATE AUIUSERFORMSETTING SET ATOOLBARMANAGERLAYOUTSIZE=0");
DDL("UPDATE AUIEXPLORERBARLAYOUT SET ALAYOUTSIZE=0");
nSchemaLevel = 133;
}
#endregion
#region MSSQL Version 134 (case 3132)
if (nSchemaLevel < 134)
{
DDL("ALTER TABLE AWORKORDER ADD ATEMPLATEFRESHPRICE BIT NOT NULL DEFAULT 0");
nSchemaLevel = 134;
}
#endregion
#region MSSQL Version 135 Case 329
if (nSchemaLevel < 135)
{
DDL("DROP INDEX [dbo].[AINTEGRATIONMAP].[IDX_AINTEGRATIONMAP2]");
//Case 329 add aintegrationid to index (again)
//Add index
DDL(
"CREATE UNIQUE INDEX [IDX_AINTEGRATIONMAP2] ON [dbo].[AINTEGRATIONMAP]([AROOTOBJECTID], [AROOTOBJECTTYPE] ,[AINTEGRATIONID]) ON [PRIMARY]"
);
nSchemaLevel = 135;
}
#endregion
#region MSSQL Version 136 Case 3740
if (nSchemaLevel < 136)
{
DDL(
@"-- Delete 'closed none received' orphan poitems
delete APURCHASEORDERITEM from APURCHASEORDERITEM
left outer join APURCHASEORDER on APURCHASEORDERITEM.APURCHASEORDERID = APURCHASEORDER.AID
where APURCHASEORDER.ASTATUS=6;
-- Fix 'Closed - partially received' po items with mismatching quantities
update APURCHASEORDERITEM set AQUANTITYORDERED=AQUANTITYRECEIVED, ACLOSED=1 from APURCHASEORDERITEM
left outer join APURCHASEORDER on APURCHASEORDERITEM.APURCHASEORDERID = APURCHASEORDER.AID
where APURCHASEORDER.ASTATUS=4;
-- **** FIX INVENTORY ON ORDER ****
-- Reset all ON ORDER to zero
update APARTBYWAREHOUSEINVENTORY set AQUANTITYONORDER=0;
-- Update on order to actual values in PO Items
update APARTBYWAREHOUSEINVENTORY
set AQUANTITYONORDER=zACTUAL.zActualQuantityOnOrder
from(
select APURCHASEORDERITEM.APARTID, APURCHASEORDERITEM.APARTWAREHOUSEID, APURCHASEORDERITEM.AQUANTITYORDERED-APURCHASEORDERITEM.AQUANTITYRECEIVED as zActualQuantityOnOrder
from APURCHASEORDERITEM
where APURCHASEORDERITEM.ACLOSED=0
) as zACTUAL
where
zACTUAL.APARTWAREHOUSEID= APARTBYWAREHOUSEINVENTORY.APARTWAREHOUSEID and
zACTUAL.APARTID=APARTBYWAREHOUSEINVENTORY.APARTID;
-- *** FIX INVENTORY COMMITTED ***
-- Reset all on order committed to zero
update APARTBYWAREHOUSEINVENTORY set AQTYONORDERCOMMITTED = 0;
-- Update on order committed to actual values in PO Items
update APARTBYWAREHOUSEINVENTORY
set AQTYONORDERCOMMITTED=zACTUAL.zActualQuantityOnOrder
from(
select APURCHASEORDERITEM.APARTID, APURCHASEORDERITEM.APARTWAREHOUSEID, APURCHASEORDERITEM.AQUANTITYORDERED-APURCHASEORDERITEM.AQUANTITYRECEIVED as zActualQuantityOnOrder
from APURCHASEORDERITEM
where APURCHASEORDERITEM.ACLOSED=0 and APURCHASEORDERITEM.AWORKORDERITEMPARTREQUESTID is not null
) as zACTUAL
where
zACTUAL.APARTWAREHOUSEID= APARTBYWAREHOUSEINVENTORY.APARTWAREHOUSEID and
zACTUAL.APARTID=APARTBYWAREHOUSEINVENTORY.APARTID;");
nSchemaLevel = 136;
}
#endregion
#endregion mssql v 7.5
//UPDATE CASE 1354 EVERY TIME A NEW SCHEMA VERSION IS DONE
//NEW MSSQL SCHEMA LEVELS ABOVE HERE
}
break;
default:
throw new ApplicationException("DBManager-SchemaUpdate: UNKNOWN DB TYPE");
}
//used for diagnosting schema update failure on client db
// Finish:
//---------------------
//Set the new schema level in the globalex table
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(
"UPDATE AGLOBALEX SET ADBSCHEMA=@aNewSchema;");
cm.AddInParameter("@aNewSchema", DbType.Int32, nSchemaLevel);
DBUtil.DB.ExecuteNonQuery(cm, _tr);
//---------------------
_tr.Commit();
}
catch (Exception ex)
{
_tr.Rollback();
throw new System.ApplicationException("\r\n\r\n*** FATAL ERROR SCHEMA UPDATE FAILED ***\r\nCONTACT TECHNICAL SUPPORT IMMEDIATELY\r\n\r\n" + ex.Message, ex);
}
finally
{
_cn.Close();
}
}//end of using block
#region ********* NEW COLUMN UPDATES ***************
#region OLD new column updates
#region Version 61 case 58 region id default value
if (nSchemaLevelAtStart < 61)
{
DDLNoTrans("UPDATE ACONTRACT SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDLNoTrans("UPDATE ALOANITEM SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDLNoTrans("UPDATE ADISPATCHZONE SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDLNoTrans("UPDATE APROJECT SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDLNoTrans("UPDATE ARATE SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDLNoTrans("UPDATE AREPORT SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDLNoTrans("UPDATE AWORKORDER SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
DDLNoTrans("UPDATE APARTWAREHOUSE SET AREGIONID = '{8236E8D1-CAB1-4797-9C34-93861954AE6A}'");
}
if (nSchemaLevelAtStart < 64)
{
DDLNoTrans("UPDATE AGLOBAL SET AMAXFILESIZEMB = 50");
}
//case 1030
if (nSchemaLevelAtStart < 71)
{
DDLNoTrans("UPDATE AREGION SET AREPLYTOEMAIL = 'youremail.here.com'");
}
#endregion
#region version 98 case 1382
if (nSchemaLevelAtStart < 98)
{
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(
"UPDATE ANOTIFYEVENT SET ACREATED=@CREATED");
cm.AddInParameter("@Created", DbType.DateTime, DBUtil.ToUTC(DBUtil.CurrentWorkingDateTime));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion
//case 1346
if (nSchemaLevelAtStart < 104)
{
DDLNoTrans("UPDATE AGLOBAL SET ASIGNATURETITLE = 'Please sign below'");
DDLNoTrans("UPDATE AGLOBAL SET ASIGNATUREHEADER = 'By signing below you agree to terms for service provided'");
}
//case 1487
if (nSchemaLevelAtStart < 110)
{
DDLNoTrans("UPDATE AGLOBAL SET AMAINGRIDAUTOREFRESH=1");
}
#endregion old new column updates
//case 1968
if (nSchemaLevelAtStart < 131)
{
//DDLNoTrans("UPDATE ASCHEDULEMARKER SET ACOMPLETED=1");
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(
"UPDATE ASCHEDULEMARKER SET ACOMPLETED=1 WHERE ASTOPDATE < @NOW");
cm.AddInParameter("@NOW", DbType.DateTime, DBUtil.ToUTC(DBUtil.CurrentWorkingDateTime));
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion
#region ********* LOCALIZED TEXT UPDATES ************
#region OLD
#region schema v5 localized text additions
if (nSchemaLevelAtStart < 5)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Address.Label.CopyToPhysical";
l.DisplayText = "Copy to physical address";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Address.Label.CopyToPostal";
l.DisplayText = "Copy to postal address";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Common.Label.Description";
l.DisplayText = "Description";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Common.Label.Name";
l.DisplayText = "Name";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Error.Object.DuplicateNameWarning";
l.DisplayText = "Warning: There is an existing item in the database with the same name";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Help.License";
l.DisplayText = "License";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "User.Label.MustBeScheduleable";
l.DisplayText = "This user must be a Scheduleable User type to preserve data history";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "User.Label.MustBeActive";
l.DisplayText = "This user must be active as it has open schedule items";
l.Save();
}
}
#endregion
#region schema v8 localized text additions
if (nSchemaLevelAtStart < 8)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.FilterAvailableTo";
l.DisplayText = "Available to";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.AnyUser";
l.DisplayText = "All users";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.FilterNone";
l.DisplayText = "No filter";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.FilterUnsaved";
l.DisplayText = "Unsaved filter";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.FirstRowsAll";
l.DisplayText = "All rows";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.FirstRows100";
l.DisplayText = "First 100 rows";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.FirstRows500";
l.DisplayText = "First 500 rows";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.FirstRows1000";
l.DisplayText = "First 1000 rows";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "GridFilter.Label.Name";
l.DisplayText = "Filter name";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.GridFilter";
l.DisplayText = "GridFilter";
l.Save();
}
//Ditch the partbin key which shouldn't be there
DBCommandWrapper cm2 = DBUtil.GetCommandFromSQL("DELETE FROM ALOCALIZEDTEXT WHERE AKEY='O.PartBin'");
DBUtil.DB.ExecuteNonQuery(cm2);
}
#endregion
#region schema v9 localized text additions
if (nSchemaLevelAtStart < 9)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "RateUnitChargeDescription.Label.NamePlural";
l.DisplayText = "Plural name";
l.Save();
}
}
#endregion
#region schema v14 localized text additions
if (nSchemaLevelAtStart < 14)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.Workorder.Close";
l.DisplayText = "Close work order";
l.Save();
}
}
#endregion
#region schema v20 localized text additions
if (nSchemaLevelAtStart < 20)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.List";
l.DisplayText = "Customer service requests";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.Status";
l.DisplayText = "Status";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.Title";
l.DisplayText = "Title";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.Details";
l.DisplayText = "Details";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequestStatus.Accepted";
l.DisplayText = "Accepted";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequestStatus.Declined";
l.DisplayText = "Declined";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequestStatus.Open";
l.DisplayText = "Open";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequestPriority.NotUrgent";
l.DisplayText = "Not urgent";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequestPriority.ASAP";
l.DisplayText = "ASAP";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequestPriority.Emergency";
l.DisplayText = "Emergency";
l.Save();
}
}
#endregion
#region schema v22 localized text additions
if (nSchemaLevelAtStart < 22)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.AcceptToNew";
l.DisplayText = "Accept to new work order";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.AcceptToExisting";
l.DisplayText = "Accept to existing work order";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.Reject";
l.DisplayText = "Reject service request";
l.Save();
}
}
#endregion
#region schema v25 Existing localized text Modifications
if (nSchemaLevelAtStart < 25)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.GetItem("NotifyDeliveryLog.Label.List", language);
l.DisplayText = l.DisplayText.Replace("30", "7");
l.Save();
}
}
#endregion
#region schema v27 localized text additions
if (nSchemaLevelAtStart < 27)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.Event.Created";
l.DisplayText = "Client service request - New";
l.Save();
}
}
#endregion
#region schema v30 localized text additions
if (nSchemaLevelAtStart < 30)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
//case 398
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Workorder.Label.Error.PartRequestsUnOrdered";
l.DisplayText = "This operation can not be completed - One or more unordered part requests need to be removed first.";
l.Save();
//Case 402
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.LastWeek";
l.DisplayText = "Week - Previous";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.Yesterday";
l.DisplayText = "Yesterday";
l.Save();
}
}
#endregion
#region schema v32 localized text additions
if (nSchemaLevelAtStart < 32)
{
//Case 420
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "LoanItem.Label.RateHour";
l.DisplayText = "Hour rate";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "LoanItem.Label.RateHalfDay";
l.DisplayText = "Half day rate";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "LoanItem.Label.RateDay";
l.DisplayText = "Day rate";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "LoanItem.Label.RateWeek";
l.DisplayText = "Week rate";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "LoanItem.Label.RateMonth";
l.DisplayText = "Month rate";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "LoanItem.Label.RateYear";
l.DisplayText = "Year rate";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WorkorderItemLoan.Label.Quantity";
l.DisplayText = "Rate quantity";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WorkorderItemLoan.Label.Rate";
l.DisplayText = "Rate";
l.Save();
}
}
#endregion
#region schema v33 localized text additions
if (nSchemaLevelAtStart < 33)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WorkorderItemLoan.Label.RateAmount";
l.DisplayText = "Rate amount";
l.Save();
}
}
#endregion
#region schema v34 localized text additions
if (nSchemaLevelAtStart < 34)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Error.Object.DuplicateSerialWarning";
l.DisplayText = "Warning: There is an existing item in the database with the same serial number";
l.Save();
}
}
#endregion
#region schema v35 localized text additions
if (nSchemaLevelAtStart < 35)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "LoanItem.Label.RateNone";
l.DisplayText = "-";
l.Save();
}
}
#endregion
#region schema v37 localized text additions
if (nSchemaLevelAtStart < 37)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Toolbar.Schedule.ShowClosed";
l.DisplayText = "Display Open / Closed (and open) work orders";
l.Save();
}
}
#endregion
#region schema v38 localized text additions
if (nSchemaLevelAtStart < 38)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Toolbar.Schedule.TimeLineView";
l.DisplayText = "Display single day view as time line / regular";
l.Save();
}
}
#endregion
#region schema v39 localized text additions
if (nSchemaLevelAtStart < 39)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Toolbar.Schedule.PrintWorkorders";
l.DisplayText = "Print selected work orders";
l.Save();
}
}
#endregion
#region schema v41 localized text additions
if (nSchemaLevelAtStart < 41)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Workorder.Label.ListAll";
l.DisplayText = "List all work orders";
l.Save();
}
}
#endregion
#region schema v43 localized text additions
if (nSchemaLevelAtStart < 43)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Menu.MRU";
l.DisplayText = "Recent...";
l.Save();
}
}
#endregion
#region schema v45 localized text additions
if (nSchemaLevelAtStart < 45)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Workorder.Label.TemplateDescription";
l.DisplayText = "Template description";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.WorkorderQuoteTemplate";
l.DisplayText = "Quote template";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.WorkorderServiceTemplate";
l.DisplayText = "Service template";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.WorkorderPreventiveMaintenanceTemplate";
l.DisplayText = "Preventive maintenance template";
l.Save();
}
}
#endregion
#region schema v47 localized text additions
if (nSchemaLevelAtStart < 47)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.WorkorderClosedStatus.Description";
l.DisplayText = "If a status is selected here, a work order will be set to this status automatically when closed by a user in AyaNova or AyaNovaWBI.";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.WorkorderClosedStatus";
l.DisplayText = "Workorder closed status";
l.Save();
}
}
#endregion
#region schema v48 localized text additions (Contacts)
if (nSchemaLevelAtStart < 48)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
#region Client
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.ContactNotes";
l.DisplayText = "Other contacts";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Contact";
l.DisplayText = "Contact";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Phone1";
l.DisplayText = "Business";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Phone2";
l.DisplayText = "Fax";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Phone3";
l.DisplayText = "Home";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Phone4";
l.DisplayText = "Mobile";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Phone5";
l.DisplayText = "Pager";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Email";
l.DisplayText = "Email";
l.Save();
#endregion client
#region Vendor
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.ContactNotes";
l.DisplayText = "Other contacts";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.Contact";
l.DisplayText = "Contact";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.Phone1";
l.DisplayText = "Business";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.Phone2";
l.DisplayText = "Fax";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.Phone3";
l.DisplayText = "Home";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.Phone4";
l.DisplayText = "Mobile";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.Phone5";
l.DisplayText = "Pager";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Vendor.Label.Email";
l.DisplayText = "Email";
l.Save();
#endregion Vendor
#region HeadOffice
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.ContactNotes";
l.DisplayText = "Other contacts";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.Contact";
l.DisplayText = "Contact";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.Phone1";
l.DisplayText = "Business";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.Phone2";
l.DisplayText = "Fax";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.Phone3";
l.DisplayText = "Home";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.Phone4";
l.DisplayText = "Mobile";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.Phone5";
l.DisplayText = "Pager";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "HeadOffice.Label.Email";
l.DisplayText = "Email";
l.Save();
#endregion HeadOffice
}
}
#endregion
#region schema v50 localized text additions
if (nSchemaLevelAtStart < 50)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ScheduleMarker.Label.FollowUp";
l.DisplayText = "Follow up";
l.Save();
}
}
#endregion
#region schema v52 localized text additions
if (nSchemaLevelAtStart < 52)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UnitNameDisplayFormats.Label.ModelNumberModelSerial";
l.DisplayText = "Model number, model name, serial number";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UnitNameDisplayFormats.Label.ModelModelNumberSerial";
l.DisplayText = "Model name, model number, serial number";
l.Save();
}
}
#endregion
#region schema v53 localized text additions
if (nSchemaLevelAtStart < 53)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UnitModel.Label.VendorID";
l.DisplayText = "Unit model vendor";
l.Save();
}
}
#endregion
#region schema v56 localized text additions
if (nSchemaLevelAtStart < 56)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DeleteWorkorderPrompt";
l.DisplayText = "Are you sure you want to delete this Workorder permanently?";
l.Save();
}
}
#endregion
#region schema v58 localized text additions
//case 722
if (nSchemaLevelAtStart < 58)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Command.Edit";
l.DisplayText = "Edit";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.TimeSpan.WithinTheHour";
l.DisplayText = "Within the hour";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.AllDay";
l.DisplayText = "All day";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "User.Label.Status";
l.DisplayText = "Status";
l.Save();
}
}
#endregion
#region schema v59 localized text additions
//case 722
if (nSchemaLevelAtStart < 59)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Go.Home";
l.DisplayText = "Home";
l.Save();
}
}
#endregion
#region AyaNova 5.0
#region schema v65 localized text additions
//case 73
if (nSchemaLevelAtStart < 65)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Toolbar.PrintPreview";
l.DisplayText = "Print preview";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Toolbar.PageSetup";
l.DisplayText = "Page setup";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.WikiPage";
l.DisplayText = "Wiki page";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.AyaFile";
l.DisplayText = "Embedded file";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "AyaFile.Error.FileTooLarge";
l.DisplayText = "File size exceeds limit of {0}";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "AyaFile.Label.FileSize";
l.DisplayText = "Size";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "AyaFile.Label.FileSizeStored";
l.DisplayText = "Size stored";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "AyaFile.Label.FileType";
l.DisplayText = "Type";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WikiPage.Label.InternalOnly";
l.DisplayText = "Internal users only";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WikiPage.Label.Title";
l.DisplayText = "Title";
l.Save();
}
}
#endregion
#region schema v67 localized text additions
//case 73
if (nSchemaLevelAtStart < 67)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.GlobalWikiPage";
l.DisplayText = "Global Wiki page";
l.Save();
}
}
#endregion
#region schema v69 localized text additions
//case 73
if (nSchemaLevelAtStart < 69)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "AyaFile.Label.Source";
l.DisplayText = "Source";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "AyaFile.Label.List";
l.DisplayText = "Files in database";
l.Save();
}
}
#endregion
#region schema v72 localized text additions
//case 53
if (nSchemaLevelAtStart < 72)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Client.Label.Notification";
l.DisplayText = "Send client notifications";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.ReplyToEmailAddress";
l.DisplayText = "Reply to email address";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.WBIUrl";
l.DisplayText = "AyaNova WBI url address";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.ClientNotifyMessage";
l.DisplayText = "Message to send to client";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.CSRAccepted";
l.DisplayText = "CSR accepted";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.CSRRejected";
l.DisplayText = "CSR rejected";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.NewWO";
l.DisplayText = "New WO";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.WOStatusChanged";
l.DisplayText = "WO status changed";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.WOClosedEmailed";
l.DisplayText = "WO Closed";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.WOFollowUp";
l.DisplayText = "WO follow up";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.AttachWorkorder";
l.DisplayText = "Attach workorder report";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.FollowUpDays";
l.DisplayText = "Days after work order closed";
l.Save();
}
}
#endregion
#region schema v73 localized text additions
//case 29
if (nSchemaLevelAtStart < 73)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "PurchaseOrder.Label.ShowPartsAllVendors";
l.DisplayText = "Select from any vendor's part";
l.Save();
}
}
#endregion
#region schema v75 localized text additions
//case 78
if (nSchemaLevelAtStart < 75)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Unit.Label.Text1";
l.DisplayText = "Text1";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Unit.Label.Text2";
l.DisplayText = "Text2";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Unit.Label.Text3";
l.DisplayText = "Text3";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Unit.Label.Text4";
l.DisplayText = "Text4";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "PurchaseOrderReceipt.Label.Text1";
l.DisplayText = "Text1";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "PurchaseOrderReceipt.Label.Text2";
l.DisplayText = "Text2";
l.Save();
}
}
#endregion
#region schema v77 localized text additions
//case 866
if (nSchemaLevelAtStart < 77)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Workorder.Label.GenerateUnit";
l.DisplayText = "Generate unit from selected part";
l.Save();
}
}
#endregion
#region schema v78 localized text additions
//case 816
if (nSchemaLevelAtStart < 78)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.LaborSchedUserDfltTimeSpan";
l.DisplayText = "Scheduled / Labor default minutes";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.TravelDfltTimeSpan";
l.DisplayText = "Travel default minutes";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.LaborSchedUserDfltTimeSpan.Description";
l.DisplayText = "Scheduled Users/Labor default time span for new records (minutes). 0 = off";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.TravelDfltTimeSpan.Description";
l.DisplayText = "Travel default time span for new records (minutes). 0 = off";
l.Save();
}
}
#endregion
#region schema v79 localized text additions
//case 984
if (nSchemaLevelAtStart < 79)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.MaxFileSizeMB";
l.DisplayText = "Maximum embedded file size";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.MaxFileSizeMB.Description";
l.DisplayText = "Largest single file size in megabytes that can be stored embedded in the database";
l.Save();
}
}
#endregion
#region schema v80 localized text additions
//case 764, case 765
if (nSchemaLevelAtStart < 80)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Go.Inventory.PurchaseOrderReceiptsDetailed";
l.DisplayText = "Items";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Go.Inventory.PurchaseOrdersDetailed";
l.DisplayText = "Items";
l.Save();
}
}
#endregion
#region schema v81 localized text additions
//case 36, case 989
if (nSchemaLevelAtStart < 81)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Report.Label.SecurityGroupID";
l.DisplayText = "Restrict to security group";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.DefaultServiceTemplateID.Description";
l.DisplayText = "Template used globally when no other more specific template is in effect";
l.Save();
}
}
#endregion
#region schema v82 localized text additions
//case 1011
if (nSchemaLevelAtStart < 82)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Part.Error.TrackSerialHasInventory";
l.DisplayText = "Track serial numbers can not be turned on as this part still has items in inventory.";
l.Save();
}
}
#endregion
#region schema v84 localized text additions - Stopwords
//case 829
if (nSchemaLevelAtStart < 84)
{
LocaleList locales = LocaleList.GetList();
LocalizedText l = null;
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
switch (language)
{
case "Espa<70>ol":
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords1";
l.DisplayText = "a acuerdo adelante ademas adem<65>s adrede ahi ah<61> ahora al alli all<6C> alrededor antano anta<74>o ante antes apenas aproximadamente aquel aqu<71>l aquella aqu<71>lla aquellas aqu<71>llas aquello aquellos aqu<71>llos aqui aqu<71> arribaabajo asi as<61> aun a<>n aunque b bajo";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords2";
l.DisplayText = "bastante bien breve c casi cerca claro como c<>mo con conmigo contigo contra cual cu<63>l cuales cu<63>les cuando cu<63>ndo cuanta cu<63>nta cuantas cu<63>ntas cuanto cu<63>nto cuantos cu<63>ntos d de debajo del delante demasiado dentro deprisa desde despacio despues despu<70>s";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords3";
l.DisplayText = "detras detr<74>s dia d<>a dias d<>as donde d<>nde dos durante e el <20>l ella ellas ellos en encima enfrente enseguida entre es esa <20>sa esas <20>sas ese <20>se eso esos <20>sos esta est<73> <20>sta estado estados estan est<73>n estar estas <20>stas este <20>ste esto estos <20>stos ex";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords4";
l.DisplayText = "excepto f final fue fuera fueron g general gran h ha habia hab<61>a habla hablan hace hacia han hasta hay horas hoy i incluso informo inform<72> j junto k l la lado las le lejos lo los luego m mal mas m<>s mayor me medio mejor menos menudo mi m<> mia m<>a mias";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords5";
l.DisplayText = "m<>as mientras mio m<>o mios m<>os mis mismo mucho muy n nada nadie ninguna no nos nosotras nosotros nuestra nuestras nuestro nuestros nueva nuevo nunca o os otra otros p pais pa<70>s para parte pasado peor pero poco por porque pronto proximo pr<70>ximo puede q";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords6";
l.DisplayText = "qeu que qu<71> quien qui<75>n quienes qui<75>nes quiza quiz<69> quizas quiz<69>s raras repente s salvo se s<> segun seg<65>n ser sera ser<65> si s<> sido siempre sin sobre solamente solo s<>lo son soyos su supuesto sus suya suyas suyo t tal tambien tambi<62>n tampoco tarde te";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords7";
l.DisplayText = "temprano ti tiene todavia todav<61>a todo todos tras tu t<> tus tuya tuyas tuyo tuyos u un una unas uno unos usted ustedes v veces vez vosotras vosotros vuestra vuestras vuestro vuestros w x y ya yo z";
l.Save();
break;
case "Deutsch":
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords1";
l.DisplayText = "sie sind soll sollen sollst sollt sonst soweit sowie und unser unsere unter vom von vor wann warum was weiter weitere wenn wer werde werden werdet weshalb wie wieder wieso wir wird wirst wo woher wohin zu zum zur <20>ber";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords2";
l.DisplayText = "aber als am an auch auf aus bei bin bis bist da dadurch daher darum das da<64> dass dein deine dem den der des dessen deshalb die dies dieser dieses doch dort du durch ein eine einem einen einer eines er es euer eure f<>r hatte hatten";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords3";
l.DisplayText = "hattest hattet hier hinter ich ihr ihre im in ist ja jede jedem jeden jeder jedes jener jenes jetzt kann kannst k<>nnen k<>nnt machen mein meine mit mu<6D> mu<6D>t musst m<>ssen m<><6D>t nach nachdem nein nicht nun oder seid sein seine sich";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords4";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords5";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords6";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords7";
l.DisplayText = "";
l.Save();
break;
case "Fran<61>ais":
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords1";
l.DisplayText = "quelle quelles quels qui sa sans ses seulement si sien son sont sous soyez sujet su ta tandis tellement tels tes ton tous tout top t<>s tu valeu voie voient vont vote vous vu <20>a <20>taient <20>tat <20>tions <20>t<EFBFBD> <20>te";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords2";
l.DisplayText = "alos au aucuns aussi aute avant avec avoi bon ca ce cela ces ceux chaque ci comme comment dans des du dedans dehos depuis deux devait doit donc dos doite d<>but elle elles en encoe essai est et eu fait faites fois";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords3";
l.DisplayText = "font foce haut hos ici il ils je juste la le les leu l<> ma maintenant mais mes mine moins mon mot m<>me ni nomm<6D>s note nous nouveaux ou o<> pa pace paole pas pesonnes peut peu pi<70>ce plupat pou pouquoi quand que quel";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords4";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords5";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords6";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords7";
l.DisplayText = "";
l.Save();
break;
default://english and any custom ones made
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords1";
l.DisplayText = "do said his both could with take like still much they been will her your how through were other or there never is here where then my must as when him them most re which if he had at";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords2";
l.DisplayText = "want many so to the be else did than that of only being got about you their our on this too has any might can before are way now since we should another also into me it by after and in";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords3";
l.DisplayText = "would some what such make come while its use those see out who ll but get have same up well because between for all each does came just from was an these himself very under over more";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords4";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords5";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords6";
l.DisplayText = "";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "StopWords7";
l.DisplayText = "";
l.Save();
break;
}
}
}
#endregion
#region schema v85 localized text additions
//case 864
if (nSchemaLevelAtStart < 85)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequestStatus.Closed";
l.DisplayText = "Closed";
l.Save();
}
}
#endregion
#region schema v86 localized text additions
//case 848
if (nSchemaLevelAtStart < 86)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ClientServiceRequest.Label.RequestedBy";
l.DisplayText = "Requested by";
l.Save();
}
}
#endregion
#region schema v87 localized text additions
//case 857
if (nSchemaLevelAtStart < 87)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Command.ExternalTools";
l.DisplayText = "External tools";
l.Save();
}
}
#endregion
#endregion AyaNova 5.0
#region AyaNova 6.0
#region schema v88 localized text additions
//case 1204
if (nSchemaLevelAtStart < 88)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Error.Lite.Database";
l.DisplayText = "Error: AyaNova Lite can only be used with a standalone FireBird database.";
l.Save();
}
}
#endregion
#region schema v89 localized text additions
//case 1204
if (nSchemaLevelAtStart < 89)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SMTPEncryption";
l.DisplayText = "SMTP Encryption";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SMTPEncryption.Description";
l.DisplayText = "Encryption method to use with SMTP server. Valid values are 'TLS', 'SSL' or empty for no encryption.";
l.Save();
}
}
#endregion
#region schema v91 localized text additions
//case 1163
if (nSchemaLevelAtStart < 91)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "User.Label.TimeZoneOffset";
l.DisplayText = "Override timezone";
l.Save();
}
}
#endregion
#region schema v93 localized text additions
//case 812
if (nSchemaLevelAtStart < 93)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "User.Label.Event.QuickNotification";
l.DisplayText = "Quick Notification";
l.Save();
}
}
#endregion
#region schema v99 localized text additions
//case 1382
if (nSchemaLevelAtStart < 99)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SMTPRetry";
l.DisplayText = "SMTP Retry deliveries";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SMTPRetry.Description";
l.DisplayText = "Don't remove SMTP / SMS notifications if unable to connect to SMTP server; retry them again on next notification processing until delivered.";
l.Save();
}
}
#endregion
#endregion ayanova 6.0
#region AyaNova 7.0
#region schema v101 localized text additions
//case 1317
if (nSchemaLevelAtStart < 101)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "O.WorkorderItemUnit";
l.DisplayText = "Workorder item unit";
l.Save();
}
}
#endregion
#region schema v104 localized text additions
//case 1346
if (nSchemaLevelAtStart < 104)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SignatureTitle";
l.DisplayText = "Signature title";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SignatureTitle.Description";
l.DisplayText = "Text displayed as title above signature area";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SignatureHeader";
l.DisplayText = "Signature header";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SignatureHeader.Description";
l.DisplayText = "Text displayed as header above signature box";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SignatureFooter";
l.DisplayText = "Signature footer";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SignatureFooter.Description";
l.DisplayText = "Text displayed as footer below signature box";
l.Save();
}
}
#endregion
#region schema v105 localized text additions
//case 1394
if (nSchemaLevelAtStart < 105)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Go.Inventory.PartInventoryAdjustmentsDetailed";
l.DisplayText = "Items";
l.Save();
}
}
#endregion
#region schema v104 localized text additions
//case 1446, case 1519
if (nSchemaLevelAtStart < 107)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UnitNameDisplayFormats.Label.VendorModelModelNumberSerial";
l.DisplayText = "Vendor, model name, model number, serial number";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ScheduleableUserNameDisplayFormats.Label.RegionLastFirst";
l.DisplayText = "Region - Last, First";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ScheduleableUserNameDisplayFormats.Label.FirstLastRegion";
l.DisplayText = "First Last - Region";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ScheduleableUserNameDisplayFormats.Label.RegionFirstLast";
l.DisplayText = "Region - First Last";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ScheduleableUserNameDisplayFormats.Label.LastFirstRegion";
l.DisplayText = "Last, First - Region";
l.Save();
}
}
#endregion
#region schema v109 case 1392 localized text additions
if (nSchemaLevelAtStart < 109)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SchedUserNonTodayStartTime";
l.DisplayText = "Scheduled default time";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.SchedUserNonTodayStartTime.Description";
l.DisplayText = "Scheduled user default time for new records when choosing start date other than today.";
l.Save();
}
}
#endregion
#region schema v110 case 1487 localized text additions
if (nSchemaLevelAtStart < 110)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.MainGridAutoRefresh";
l.DisplayText = "Auto-refresh main grids";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Global.Label.MainGridAutoRefresh.Description";
l.DisplayText = "Refresh main grid lists automatically every 5 minutes.";
l.Save();
}
}
#endregion
#region schema v111 case 1346 localized text additions
if (nSchemaLevelAtStart < 111)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Workorder.Label.Sign";
l.DisplayText = "Sign";
l.Save();
}
}
#endregion
#region schema v112 case 1556 localized text additions
if (nSchemaLevelAtStart < 112)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WorkorderQuoteStatusTypes.Label.New";
l.DisplayText = "New";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WorkorderQuoteStatusTypes.Label.NotAwarded2";
l.DisplayText = "Beyond economical repair";
l.Save();
}
}
#endregion
#region Schema 113 case 1140
if (nSchemaLevelAtStart < 113)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WorkorderItemScheduledUser.Label.Warn.OutOfRegion";
l.DisplayText = "Warning: User is not in client's region - won't see this item.";
l.Save();
}
}
#endregion schema 113
#region schema v116 case 1499
if (nSchemaLevelAtStart < 116)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.QuoteStatusChanged";
l.DisplayText = "Quote status changed";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Region.Label.AttachQuote";
l.DisplayText = "Attach quote report";
l.Save();
}
}
#endregion
#region schema v117 case 1555
if (nSchemaLevelAtStart < 117)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Workorder.Label.Event.QuoteUpdated";
l.DisplayText = "Quote - created / updated";
l.Save();
}
}
#endregion
#endregion 7.0
#region AyaNova 7.2
#region schema v119 case 1805
if (nSchemaLevelAtStart < 119)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Dashboard.Label.Dashboard";
l.DisplayText = "Dashboard";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Common.Label.More";
l.DisplayText = "More...";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Dashboard.Label.Overdue";
l.DisplayText = "Overdue";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Dashboard.Label.Scheduled";
l.DisplayText = "Scheduled";
l.Save();
}
}
#endregion
#region schema v121 case 1805
if (nSchemaLevelAtStart < 121)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Dashboard.Label.Reminders";
l.DisplayText = "Reminders";
l.Save();
}
}
#endregion
#region schema v122 case 1805
if (nSchemaLevelAtStart < 122)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Dashboard.Label.NotAssigned";
l.DisplayText = "Not assigned";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Dashboard.Label.Next";
l.DisplayText = "Next";
l.Save();
}
}
#endregion
#region schema v123 case 1805
if (nSchemaLevelAtStart < 123)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.ThisYear";
l.DisplayText = "Year - Current";
l.Save();
}
}
#endregion
#region schema v124 case 1122
if (nSchemaLevelAtStart < 124)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.ShowAll";
l.DisplayText = "Show all...";
l.Save();
}
}
#endregion
#region schema v125 case 1810
if (nSchemaLevelAtStart < 125)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Locale.Label.CustomizeText";
l.DisplayText = "Customize text";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Locale.Label.WarnLocaleLocked";
l.DisplayText = "Your user account is using the \"English\" locale text.\r\n" +
"This locale is read only and can not be edited.\r\n" +
"Please change your locale in your user settings to any other value than \"English\" to proceed.";
l.Save();
}
}
#endregion
#region schema v126 case 1909
if (nSchemaLevelAtStart < 126)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "WorkorderService.Label.Age";
l.DisplayText = "Age";
l.Save();
}
}
#endregion
#endregion ayanova 7.2
#region AyaNova 7.3
#region schema v27 case 1995
if (nSchemaLevelAtStart < 127)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "PartDisplayFormats.Label.NameNumberManufacturer";
l.DisplayText = "Name - number - manufacturer";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "PartDisplayFormats.Label.NameCategoryNumberManufacturer";
l.DisplayText = "Name - category - number - manufacturer";
l.Save();
}
}
#endregion
#region schema v128 case 2067
if (nSchemaLevelAtStart < 128)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.Past";
l.DisplayText = "Past";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.Future";
l.DisplayText = "Future";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.LastYear";
l.DisplayText = "Year - Last";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.InTheLastThreeMonths";
l.DisplayText = "In the last 3 months";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.InTheLastSixMonths";
l.DisplayText = "In the last 6 months";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UI.Label.DateRange.InTheLastYear";
l.DisplayText = "In the last year";
l.Save();
}
}
#endregion
#endregion ayanova 7.3
#endregion old localized text updates
#region AyaNova 7.5
#region schema v130 localized text additions
//case 3150
if (nSchemaLevelAtStart < 130)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UnitNameDisplayFormats.Label.SerialDescription";
l.DisplayText = "Serial number, description";
l.Save();
l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "UnitNameDisplayFormats.Label.VendorSerialDescription";
l.DisplayText = "Vendor, serial number, description";
l.Save();
}
}
#endregion case 3150 schema 130
#region schema v132 localized text additions
//case 1968
if (nSchemaLevelAtStart < 132)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ScheduleMarker.Label.Completed";
l.DisplayText = "Completed";
l.Save();
}
}
#endregion case 1968 schema 132
#region schema v133 localized text additions
//case 1967
if (nSchemaLevelAtStart < 133)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "ScheduleMarker.Label.List";
l.DisplayText = "Schedule markers";
l.Save();
}
}
#endregion case 1967 schema 133
#region schema v134 localized text additions
//case 3132
if (nSchemaLevelAtStart < 134)
{
LocaleList locales = LocaleList.GetList();
foreach (LocaleList.LocaleListInfo localelanguage in locales)
{
string language = localelanguage.Locale;
LocalizedText l = LocalizedText.NewItem();
l.Locale = language;
l.Key = "Workorder.Label.TemplateFreshPrice";
l.DisplayText = "Use current Part prices on generated order";
l.Save();
}
}
#endregion case 1967 schema 134
#endregion ayanova 7.5
#endregion localized text updates
#region ********** OBJECT UPDATES ****************
#region OLD
#region schema v49 Contact deprecation
//Case 432 Move primary contact data into root biz object
//Move all subsequent contacts into contactnotes field in root object
if (nSchemaLevelAtStart < 49)
{
SafeDataReader dr = null;
xContacts ct = null;
Client client = null;
Vendor vendor = null;
HeadOffice headoffice = null;
Guid lastID = Guid.Empty;
ContactTitles titles = ContactTitles.GetItems();
xContactPhone phone = null;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
string sBusiness = "ContactPhone.Label.ContactPhoneType.Business";
string sFax = "ContactPhone.Label.ContactPhoneType.Fax";
string sHome = "ContactPhone.Label.ContactPhoneType.Home";
string sMobile = "ContactPhone.Label.ContactPhoneType.Mobile";
string sPager = "ContactPhone.Label.ContactPhoneType.Pager";
string sAdminLocale = User.AdminUserLocale;
sBusiness = LocalizedTextTable.GetLocalizedTextDirect(sBusiness, sAdminLocale);
sFax = LocalizedTextTable.GetLocalizedTextDirect(sFax, sAdminLocale);
sHome = LocalizedTextTable.GetLocalizedTextDirect(sHome, sAdminLocale);
sMobile = LocalizedTextTable.GetLocalizedTextDirect(sMobile, sAdminLocale);
sPager = LocalizedTextTable.GetLocalizedTextDirect(sPager, sAdminLocale);
#region Clients
//Contacts
dr = DBUtil.GetReaderFromSQLString("SELECT aContact.* " +
"FROM aContact WHERE " +
"aRootObjectType=3 ORDER BY AROOTOBJECTID");
ct = xContacts.GetItems(dr, RootObjectTypes.Client);
if (dr != null) dr.Close();
foreach (xContact c in ct)
{
//New rootobject?
if (c.RootObjectID != lastID)
{
lastID = c.RootObjectID;
if (client != null)
client.Save();
try//case 1178 (one client's data had a contact but not the client that matches)
{
client = Client.GetItemNoMRU(c.RootObjectID);
}
catch
{
continue;
}
//reset it in case this is a re-import as code below only adds to this field
client.ContactNotes = "";
}
if (c.PrimaryContact)
{
//put in the primary contact fields
sb.Append(titles.TitleFromID(c.ContactTitleID));
sb.Append(AyaBizUtils.SS("", c.FirstName, " "));
sb.Append(AyaBizUtils.SS("", c.LastName, " "));
client.Contact = sb.ToString();
sb.Length = 0;
//Phone numbers:
phone = c.Phones[ContactPhoneTypes.Business];
if (phone != null)
client.Phone1 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Fax];
if (phone != null)
client.Phone2 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Home];
if (phone != null)
client.Phone3 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Mobile];
if (phone != null)
client.Phone4 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Pager];
if (phone != null)
client.Phone5 = phone.NumberOnlyFullPhoneRecord;
//Email address
client.Email = c.EmailAddress;
}
//Put in the notes
sb.Append(titles.TitleFromID(c.ContactTitleID));
sb.Append(AyaBizUtils.SS("", c.FirstName, " "));
sb.Append(AyaBizUtils.SS("", c.LastName, " "));
sb.Append(AyaBizUtils.SS("", c.JobTitle, " "));
sb.Append(AyaBizUtils.SS("", c.Description, " "));
sb.Append(AyaBizUtils.SS("\r\n\t", c.EmailAddress, ""));
foreach (xContactPhone p in c.Phones)
{
sb.Append("\r\n");
sb.Append("\t");
switch (p.ContactPhoneType)
{
case ContactPhoneTypes.Business:
sb.Append(AyaBizUtils.SS("", sBusiness, ": "));
break;
case ContactPhoneTypes.Fax:
sb.Append(AyaBizUtils.SS("", sFax, ": "));
break;
case ContactPhoneTypes.Home:
sb.Append(AyaBizUtils.SS("", sHome, ": "));
break;
case ContactPhoneTypes.Mobile:
sb.Append(AyaBizUtils.SS("", sMobile, ": "));
break;
case ContactPhoneTypes.Pager:
sb.Append(AyaBizUtils.SS("", sPager, ": "));
break;
}
sb.Append(p.NumberOnlyFullPhoneRecord);
}
sb.Append("\r\n");
client.ContactNotes += sb.ToString();
sb.Length = 0;
}
//Save the final one
if (client != null)
client.Save();
#endregion
#region Vendors
//Contacts
dr = DBUtil.GetReaderFromSQLString("SELECT aContact.* " +
"FROM aContact WHERE " +
"aRootObjectType=4 ORDER BY AROOTOBJECTID");
ct = xContacts.GetItems(dr, RootObjectTypes.Vendor);
if (dr != null) dr.Close();
foreach (xContact c in ct)
{
//New rootobject?
if (c.RootObjectID != lastID)
{
lastID = c.RootObjectID;
if (vendor != null)
vendor.Save();
vendor = Vendor.GetItemNoMRU(c.RootObjectID);
//reset it in case this is a re-import as code below only adds to this field
vendor.ContactNotes = "";
}
if (c.PrimaryContact)
{
//put in the primary contact fields
sb.Append(titles.TitleFromID(c.ContactTitleID));
sb.Append(AyaBizUtils.SS("", c.FirstName, " "));
sb.Append(AyaBizUtils.SS("", c.LastName, " "));
vendor.Contact = sb.ToString();
sb.Length = 0;
//Phone numbers:
phone = c.Phones[ContactPhoneTypes.Business];
if (phone != null)
vendor.Phone1 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Fax];
if (phone != null)
vendor.Phone2 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Home];
if (phone != null)
vendor.Phone3 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Mobile];
if (phone != null)
vendor.Phone4 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Pager];
if (phone != null)
vendor.Phone5 = phone.NumberOnlyFullPhoneRecord;
//Email address
vendor.Email = c.EmailAddress;
}
//Contactnotes
sb.Append(titles.TitleFromID(c.ContactTitleID));
sb.Append(AyaBizUtils.SS("", c.FirstName, " "));
sb.Append(AyaBizUtils.SS("", c.LastName, " "));
sb.Append(AyaBizUtils.SS("", c.JobTitle, " "));
sb.Append(AyaBizUtils.SS("", c.Description, " "));
sb.Append(AyaBizUtils.SS("\r\n\t", c.EmailAddress, ""));
foreach (xContactPhone p in c.Phones)
{
sb.Append("\r\n");
sb.Append("\t");
switch (p.ContactPhoneType)
{
case ContactPhoneTypes.Business:
sb.Append(AyaBizUtils.SS("", sBusiness, ": "));
break;
case ContactPhoneTypes.Fax:
sb.Append(AyaBizUtils.SS("", sFax, ": "));
break;
case ContactPhoneTypes.Home:
sb.Append(AyaBizUtils.SS("", sHome, ": "));
break;
case ContactPhoneTypes.Mobile:
sb.Append(AyaBizUtils.SS("", sMobile, ": "));
break;
case ContactPhoneTypes.Pager:
sb.Append(AyaBizUtils.SS("", sPager, ": "));
break;
}
sb.Append(p.NumberOnlyFullPhoneRecord);
}
sb.Append("\r\n");
vendor.ContactNotes += sb.ToString();
sb.Length = 0;
}
//Save the final one
if (vendor != null)
vendor.Save();
#endregion vendors
#region headoffices
//Contacts
dr = DBUtil.GetReaderFromSQLString("SELECT aContact.* " +
"FROM aContact WHERE " +
"aRootObjectType=5 ORDER BY AROOTOBJECTID");
ct = xContacts.GetItems(dr, RootObjectTypes.HeadOffice);
if (dr != null) dr.Close();
foreach (xContact c in ct)
{
//New rootobject?
if (c.RootObjectID != lastID)
{
lastID = c.RootObjectID;
if (headoffice != null)
headoffice.Save();
headoffice = HeadOffice.GetItemNoMRU(c.RootObjectID);
//reset it in case this is a re-import as code below only adds to this field
headoffice.ContactNotes = "";
}
if (c.PrimaryContact)
{
//put in the primary contact fields
sb.Append(titles.TitleFromID(c.ContactTitleID));
sb.Append(AyaBizUtils.SS("", c.FirstName, " "));
sb.Append(AyaBizUtils.SS("", c.LastName, " "));
headoffice.Contact = sb.ToString();
sb.Length = 0;
//Phone numbers:
phone = c.Phones[ContactPhoneTypes.Business];
if (phone != null)
headoffice.Phone1 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Fax];
if (phone != null)
headoffice.Phone2 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Home];
if (phone != null)
headoffice.Phone3 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Mobile];
if (phone != null)
headoffice.Phone4 = phone.NumberOnlyFullPhoneRecord;
phone = c.Phones[ContactPhoneTypes.Pager];
if (phone != null)
headoffice.Phone5 = phone.NumberOnlyFullPhoneRecord;
//Email address
headoffice.Email = c.EmailAddress;
}
//Put in the notes
sb.Append(titles.TitleFromID(c.ContactTitleID));
sb.Append(AyaBizUtils.SS("", c.FirstName, " "));
sb.Append(AyaBizUtils.SS("", c.LastName, " "));
sb.Append(AyaBizUtils.SS("", c.JobTitle, " "));
sb.Append(AyaBizUtils.SS("", c.Description, " "));
sb.Append(AyaBizUtils.SS("\r\n\t", c.EmailAddress, ""));
foreach (xContactPhone p in c.Phones)
{
sb.Append("\r\n");
sb.Append("\t");
switch (p.ContactPhoneType)
{
case ContactPhoneTypes.Business:
sb.Append(AyaBizUtils.SS("", sBusiness, ": "));
break;
case ContactPhoneTypes.Fax:
sb.Append(AyaBizUtils.SS("", sFax, ": "));
break;
case ContactPhoneTypes.Home:
sb.Append(AyaBizUtils.SS("", sHome, ": "));
break;
case ContactPhoneTypes.Mobile:
sb.Append(AyaBizUtils.SS("", sMobile, ": "));
break;
case ContactPhoneTypes.Pager:
sb.Append(AyaBizUtils.SS("", sPager, ": "));
break;
}
sb.Append(p.NumberOnlyFullPhoneRecord);
}
sb.Append("\r\n");
headoffice.ContactNotes += sb.ToString();
sb.Length = 0;
}
//Save the final one
if (headoffice != null)
headoffice.Save();
#endregion head offices
}
#endregion
#region Schema 60 null Contract expiry date update
if (nSchemaLevelAtStart < 60)
{
int n = 0;
int nhead = 0;
DateTime dtNew = new DateTime(2100, 1, 1);
Client c;
HeadOffice h;
ClientPickList cpl = ClientPickList.GetList();
foreach (ClientPickList.ClientPickListInfo i in cpl)
{
c = Client.GetItem(i.ID);
if (c.ContractID != Guid.Empty && c.ContractExpires is System.DBNull)
{
c.ContractExpires = dtNew;
c.Save();
n++;
}
if (c.HeadOfficeID != Guid.Empty)
{
h = HeadOffice.GetItem(c.HeadOfficeID);
if (h.ContractID != Guid.Empty && h.ContractExpires is System.DBNull)
{
h.ContractExpires = dtNew;
h.Save();
nhead++;
}
}
}
}
#endregion
#endregion old
#region Schema 115 Case 1151
if (nSchemaLevelAtStart < 115)
{
RegionList rl = RegionList.GetList("");
foreach (RegionList.RegionListInfo rli in rl)
{
Region r = Region.GetItem(rli.LT_Region_Label_Name.Value);
//insert parent workorder status change notification into collection under it
if (r.NotifyWOStatusID != Guid.Empty)
{
RegionWoStatusNotifyItem ni=r.WoStatusNotifyItems.Add(r);
ni.NotifyWOStatusID = r.NotifyWOStatusID;
ni.NotifyWOStatMSG = r.NotifyWOStatMSG;
ni.Active = r.NotifyWOStatus;
ni.WoReportID = Guid.Empty;
r.Save();
}
}
}
#endregion schema
#region Schema 118 case 1687
if (nSchemaLevelAtStart < 118)
{
UnitPickList upl = UnitPickList.GetListOfAll();
foreach (UnitPickList.UnitPickListInfo i in upl)
{
Unit u = Unit.GetItem(i.ID);
if (!string.IsNullOrWhiteSpace(u.Text1) ||
!string.IsNullOrWhiteSpace(u.Text2) ||
!string.IsNullOrWhiteSpace(u.Text3) ||
!string.IsNullOrWhiteSpace(u.Text4))
{
//make unit dirty then save it
string s = u.Text1;
u.Text1 = ".";
u.Text1 = s;
if (u.IsSavable)
u.Save();
}
}
}
#endregion schema 118
#endregion object updates
//case 1299 Recompute all statistics in Firebird since it's not done automatically
//note this call is safe regardless if mssql being used since it checks the db type first
//This will ensure that at least during every schema update the indexes will be recomputed
FireBirdRecomputeStatistics();
AyaBizUtils._SchemaUpdating = false;
}//end of dataportal update method
/// <summary>
/// execute DDL statement
/// </summary>
/// <param name="sDDL"></param>
public void DDL(string sDDL)
{
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(sDDL.ToUpperInvariant());
DBUtil.DB.ExecuteNonQuery(cm, _tr);
}
/// <summary>
/// execute DDL statement without uppercasing
/// (for the localized text changes primarily)
/// </summary>
/// <param name="sDDL"></param>
public void DDLNoUpper(string sDDL)
{
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(sDDL);
DBUtil.DB.ExecuteNonQuery(cm, _tr);
}
/// <summary>
/// execute DDL uppercasing statement
/// outside of transaction
/// </summary>
/// <param name="sDDL"></param>
public void DDLNoTrans(string sDDL)
{
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(sDDL.ToUpperInvariant());
DBUtil.DB.ExecuteNonQuery(cm);
}
#region Add new object right
/// <summary>
/// Add new right
/// </summary>
/// <param name="sRight"></param>
/// <param name="defaultSecurityLevel"></param>
private void AddNewUserRightToAllSecurityGroups(string sRight, SecurityLevelTypes defaultSecurityLevel)
{
//Get a list of security groups
SafeDataReader dr = null;
ArrayList al = new ArrayList();
try
{
dr = DBUtil.GetReaderFromSQLString("SELECT aID " +
"FROM aSecurityGroup", _tr);
while (dr.Read())
{
al.Add(dr.GetGuid("aID"));
}
dr.Close();
foreach (object o in al)
{
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(
"INSERT INTO aUserRight (aID, aSecurityGroupID, aRight, " +
"aSecurityLevel, aCreated,aModified,aCreator,aModifier) VALUES " +
"(@ID,@SecurityGroupID,@Right,@SecurityLevel,@Created,@Modified,@CurrentUserID, " +
"@CurrentUserID)"
);
//Purchase order item fields
cm.AddInParameter("@ID", DbType.Guid, Guid.NewGuid());
cm.AddInParameter("@SecurityGroupID", DbType.Guid, (Guid)o);
cm.AddInParameter("@Right", DbType.String, sRight);
cm.AddInParameter("@SecurityLevel", DbType.Int16, (int)defaultSecurityLevel);
//Standard fields
cm.AddInParameter("@CurrentUserID", DbType.Guid, User.AdministratorID);
cm.AddInParameter("@Created", DbType.DateTime, DBUtil.ToUTC(DBUtil.CurrentWorkingDateTime));
cm.AddInParameter("@Modified", DbType.DateTime, DBUtil.ToUTC(DBUtil.CurrentWorkingDateTime));
DBUtil.DB.ExecuteNonQuery(cm, _tr);
}
}
finally
{
if (dr != null) dr.Close();
}
//Insert the right for each group
//Wala!
}
#endregion
}//end of schemalizer class
#endregion schemalizyer
#region Unschedule users
/// <summary>
/// Unset any scheduled users on objects where they
/// can be set i.e. workorder etc.
///
/// Used by license entry code when a user installs a less than 5 user
/// key into a trial database but does not erase the trial data.
///
/// This avoids a license violation error and messy manual steps to
/// recover from it.
/// </summary>
[Serializable, System.ComponentModel.Browsable(false)]
public class UnscheduleAllUsers//DO_NOT_OBFUSCATE
{
public UnscheduleAllUsers()
{
}
public static void Unschedule()
{
DataPortal.Update(new UnscheduleAllUsers());
}
public void DataPortal_Update()
{
DBCommandWrapper cm = null;
cm = DBUtil.GetCommandFromSQL("UPDATE aWorkorderItemScheduledUser SET AUSERID=null");
DBUtil.DB.ExecuteNonQuery(cm);
}
}
//case 1172
/// <summary>
/// Change any scheduled users on objects where they
/// can be set i.e. workorder etc to the lite user.
///
/// Used by license entry code when a user installs a lite license into
/// a full copy
///
/// </summary>
[Serializable, System.ComponentModel.Browsable(false)]
public class UnscheduleAllUsersToLite//DO_NOT_OBFUSCATE
{
public UnscheduleAllUsersToLite()
{
}
public static void UnscheduleToLite()
{
DataPortal.Update(new UnscheduleAllUsersToLite());
}
public void DataPortal_Update()
{
DBCommandWrapper cm = null;
cm = DBUtil.GetCommandFromSQL("UPDATE aWorkorderItemScheduledUser SET AUSERID='{0A6AF710-366D-4CA8-BBC7-FCC75F0D1BD3}'");
DBUtil.DB.ExecuteNonQuery(cm);
}
}
#endregion unschedule
#region Merge clients
/// <summary>
/// Sets all records in the following objects from the source client id
/// to the destination id
/// ClientNote, ClientServiceRequest, PurchaseOrder, Unit, User, WorkOrder, ServiceBank
/// </summary>
[Serializable, System.ComponentModel.Browsable(false)]
public class MergeClients//DO_NOT_OBFUSCATE
{
Guid _src;
Guid _dest;
public MergeClients(Guid SourceClientID, Guid DestClientID)
{
_src = SourceClientID;
_dest = DestClientID;
}
public static void Merge(Guid SourceClientID, Guid DestClientID)
{
DataPortal.Update(new MergeClients(SourceClientID, DestClientID));
}
public void DataPortal_Update()
{
using (IDbConnection connection = DBUtil.DB.GetConnection())
{
connection.Open();
IDbTransaction transaction = connection.BeginTransaction();
try
{
DBCommandWrapper cm = null;
cm = DBUtil.DB.GetSqlStringCommandWrapper("UPDATE ACLIENTNOTE SET ACLIENTID=@DESTID WHERE ACLIENTID=@SOURCEID");
cm.AddInParameter("@SOURCEID", DbType.Guid, _src);
cm.AddInParameter("@DESTID", DbType.Guid, _dest);
DBUtil.DB.ExecuteNonQuery(cm, transaction);
cm = DBUtil.DB.GetSqlStringCommandWrapper("UPDATE ACLIENTSERVICEREQUEST SET ACLIENTID=@DESTID WHERE ACLIENTID=@SOURCEID");
cm.AddInParameter("@SOURCEID", DbType.Guid, _src);
cm.AddInParameter("@DESTID", DbType.Guid, _dest);
DBUtil.DB.ExecuteNonQuery(cm, transaction);
cm = DBUtil.DB.GetSqlStringCommandWrapper("UPDATE APURCHASEORDER SET ADROPSHIPTOCLIENTID=@DESTID WHERE ADROPSHIPTOCLIENTID=@SOURCEID");
cm.AddInParameter("@SOURCEID", DbType.Guid, _src);
cm.AddInParameter("@DESTID", DbType.Guid, _dest);
DBUtil.DB.ExecuteNonQuery(cm, transaction);
cm = DBUtil.DB.GetSqlStringCommandWrapper("UPDATE AUNIT SET ACLIENTID=@DESTID WHERE ACLIENTID=@SOURCEID");
cm.AddInParameter("@SOURCEID", DbType.Guid, _src);
cm.AddInParameter("@DESTID", DbType.Guid, _dest);
DBUtil.DB.ExecuteNonQuery(cm, transaction);
cm = DBUtil.DB.GetSqlStringCommandWrapper("UPDATE AUSER SET ACLIENTID=@DESTID WHERE ACLIENTID=@SOURCEID");
cm.AddInParameter("@SOURCEID", DbType.Guid, _src);
cm.AddInParameter("@DESTID", DbType.Guid, _dest);
DBUtil.DB.ExecuteNonQuery(cm, transaction);
cm = DBUtil.DB.GetSqlStringCommandWrapper("UPDATE AWORKORDER SET ACLIENTID=@DESTID WHERE ACLIENTID=@SOURCEID");
cm.AddInParameter("@SOURCEID", DbType.Guid, _src);
cm.AddInParameter("@DESTID", DbType.Guid, _dest);
DBUtil.DB.ExecuteNonQuery(cm, transaction);
//cm = DBUtil.DB.GetSqlStringCommandWrapper("UPDATE ASERVICEBANK SET AAPPLIESTOROOTOBJECTID=@DESTID WHERE AAPPLIESTOROOTOBJECTID=@SOURCEID");
//cm.AddInParameter("@SOURCEID", DbType.Guid, _src);
//cm.AddInParameter("@DESTID", DbType.Guid, _dest);
//DBUtil.DB.ExecuteNonQuery(cm, transaction);
// Commit the transaction
//transaction.Rollback();//for testing
transaction.Commit();
}
catch (Exception ex)
{
// Rollback transaction
transaction.Rollback();
throw (ex);
}
finally
{
connection.Close();
}
}
}
}
#endregion MergeClients
#region Case 973 Reset cached items in AyaBizUtils at DataPortal side
/// <summary>
/// Reset the cached items in AyaBizUtils inside the dataportal
/// called when something is done at the users end that would affect
/// the cached info at the dataportal end like entering a new license key
/// </summary>
[Serializable, System.ComponentModel.Browsable(false)]
public class ResetCacheInDataPortal//DO_NOT_OBFUSCATE
{
public ResetCacheInDataPortal()
{
}
public static void Reset()
{
DataPortal.Update(new ResetCacheInDataPortal());
}
public void DataPortal_Update()
{
AyaBizUtils._GlobalX = null;
AyaBizUtils.GlobalSettings = null;
}
}
#endregion ResetCacheInDataPortal
#region case 1299 Recompute statistics in FireBird
[Serializable, System.ComponentModel.Browsable(false)]
public class FBRecomputeStats//DO_NOT_OBFUSCATE
{
public FBRecomputeStats()
{
}
public static void Recompute()
{
DataPortal.Update(new FBRecomputeStats());
}
public void DataPortal_Update()
{
SafeDataReader dr = null;
try
{
System.Collections.Generic.List<string> sIndexes = new System.Collections.Generic.List<string>();
dr = DBUtil.GetReaderFromSQLString("SELECT RDB$INDEX_NAME FROM RDB$INDICES");
while (dr.Read())
{
string sIndexName = dr[0].ToString();
if (sIndexName.StartsWith("RDB$")) continue;
sIndexes.Add(sIndexName);
}
dr.Close();
DBCommandWrapper cm = null;
//iterate indexes and recompute stats on them
foreach (string sIndex in sIndexes)
{
cm = DBUtil.GetCommandFromSQL("SET STATISTICS INDEX " + sIndex + ";");
DBUtil.DB.ExecuteNonQuery(cm);
}
}
finally
{
if (dr != null) dr.Close();
}
}
}
#endregion case 1299
//--------------------------------------------------------------------------
}
#pragma warning restore 1591
}