In looking at it, I think the majority of the code is interaction with other systems -- the GP portion is the minority. As you may have gathered, the code moves orders to a SHIPPED batch -- it's a web service for our fulfillment company to connect to. Sparing you the bulk of it, here's the GP DB interaction:
*********** START CODE ***********
#region check GP database for the order
// verify the order exists in GP
SqlCommand query = new SqlCommand(
"select 1 from dbo.sop10100 where sopnumbe='" + SqlEscape(OrderID) + "' and soptype=2",
Global.gpdb
);
Int32 result = Convert.ToInt32(query.ExecuteScalar());
if (result < 1)
{
// if the order cannot be found, update the log entry with an ORDER NOT FOUND
return new LoggedServiceResponse(logger.LogEntryId, "The order could not be found.", false);
}
#endregion check GP database for the order
#region check GP database for records in USER DEFINED table
// verify the order exists in GP
query = new SqlCommand(
"select 1 from dbo.sop10106 where sopnumbe='" + SqlEscape(OrderID) + "' and soptype=2",
Global.gpdb
);
result = Convert.ToInt32(query.ExecuteScalar());
if (result < 1)
{
// if the order cannot be found, update the log entry with an ORDER NOT FOUND
return new LoggedServiceResponse(logger.LogEntryId, "The order was found, but was never successfully submitted for fulfillment.", false);
}
#endregion check GP database for records in USER DEFINED table
#region update date, method, and price fields
String updateOrderValues = "update dbo.sop10106 set usrdat02=@ship_date, userdef1=@ship_method, userdef2=@ship_cost where sopnumbe=@order_id and soptype=2";
query = new SqlCommand(updateOrderValues, Global.gpdb);
query.Parameters.Add(new SqlParameter("@ship_date", ShipDate));
query.Parameters.Add(new SqlParameter("@ship_method", ShipMethod));
query.Parameters.Add(new SqlParameter("@ship_cost", ShipCost));
query.Parameters.Add(new SqlParameter("@order_id", OrderID));
query.ExecuteNonQuery();
#endregion update date, method, and price fields
#region update the batch number
String updateOrderBatch = "update dbo.sop10100 set bachnumb=@batch where sopnumbe=@order_id and soptype=2";
query = new SqlCommand(updateOrderBatch, Global.gpdb);
query.Parameters.Add(new SqlParameter("@order_id", OrderID));
query.Parameters.Add(new SqlParameter("@batch", "SHIPPED"));
query.ExecuteNonQuery();
#endregion update the batch number
#region insert tracking numbers
String removeExistingTrackingNumbers = "delete from dbo.sop10107 where sopnumbe=@order_id and soptype=2";
query = new SqlCommand(removeExistingTrackingNumbers, Global.gpdb);
query.Parameters.Add(new SqlParameter("@order_id", OrderID));
query.ExecuteNonQuery();
if (TrackingNumbers.Length > 0)
{
// de-dupe tracking numbers?
String insertTrackingNumber = "BEGIN TRY insert into dbo.sop10107 (soptype, sopnumbe, Tracking_number) values (2, @order_id, @tracking_number); END TRY BEGIN CATCH END CATCH;";
query = new SqlCommand(insertTrackingNumber, Global.gpdb);
query.Parameters.Add(new SqlParameter("@order_id", OrderID));
query.Parameters.Add(new SqlParameter("@tracking_number", "this string still be removed."));
for (int i = 0; i < TrackingNumbers.Length; i++)
{
query.Parameters.RemoveAt("@tracking_number");
query.Parameters.Add(new SqlParameter("@tracking_number", TrackingNumbers[i]));
query.ExecuteNonQuery();
}
}
#endregion insert tracking numbers
*********** END CODE ***********
That should be it for GP-related code. Sorry about any formatting issues -- I'm not sure of the best way to format code in this forum.
Thanks for the help!