public override int Save() { if (Id < 0) { DBContractDetail[] dbContractDetail = new DBContractDetail[Detail.Count]; for (int i = 0; i < Detail.Count; i++) { dbContractDetail[i] = ContractDetail.ToDBContractDetail(Detail[i]); } List<Dictionary<string, object>> listPaymentPlan = new List<Dictionary<string,object>>(); foreach (ContractPaymentPlan paymentPlan in PaymentPlan) { Dictionary<string, object> plan = new Dictionary<string,object>(); plan.Add("Amount", paymentPlan.Amount); plan.Add("Date", paymentPlan.Date); plan.Add("Condition", paymentPlan.Condition); listPaymentPlan.Add(plan); } return DBContract.AddPaidWork(ContractorId, Currency, CreatedBy, Description, ToString(ContractStatus.Active), Start, End, ExchangeRate, Amount, _advance, dbContractDetail, listPaymentPlan); } return -1; }
public static int Add(int contractorId, string currency, string createdBy, string description, string status, DateTime start, DateTime end, decimal rate, decimal amount, DBContractDetail[] listDetail) { SqlConnection connection = new SqlConnection(DBHelper.Instance.ConnectionString); SqlTransaction transaction; SqlCommand command = new SqlCommand(); int identity = -1; connection.Open(); transaction = connection.BeginTransaction(); command.Connection = connection; command.Transaction = transaction; try { command.CommandText = "INSERT INTO uContrato " + "(IdContratista,CodigoMoneda,Monto,FechaCreacion,UsuarioCreador,FechaInicio,FechaFin,TipoCambio,Glosa,Estado)" + " VALUES " + string.Format("({0},'{1}',{2},GETDATE(),'{3}','{4}','{5}',{6},'{7}','{8}')", contractorId, currency, DBConverter.ToSafeDecimal(amount), createdBy, DBConverter.ToSafeDate(start), DBConverter.ToSafeDate(end), DBConverter.ToSafeDecimal(rate), description, status) + ";SELECT Id FROM uContrato WHERE Id=@@IDENTITY"; identity = (int)command.ExecuteScalar(); foreach(DBContractDetail detail in listDetail) { command.CommandText = "INSERT INTO uContratoDetalle " + "(IdProyecto,IdBloque,IdObra,IdGrupo,IdItem,IdSubItem,IdContrato,AvanceInicial,PrecioReal,Precio)" + " VALUES " + string.Format("({0},{1},{2},{3},{4},{5},{6},{7},{8},{8})", detail.ProjectId, detail.BlockId, detail.WorkId, detail.GroupId, detail.ItemId, detail.SubItemId, identity, detail.Progress, DBConverter.ToSafeDecimal(detail.Price)); command.ExecuteNonQuery(); } transaction.Commit(); } catch(Exception) { transaction.Rollback(); identity = -1; } connection.Close(); command.Dispose(); transaction.Dispose(); connection.Dispose(); return identity; }
public virtual int Save() { if (_id < 0) { DBContractDetail[] dbContractDetail = new DBContractDetail[Detail.Count]; for(int i=0; i < _detail.Count; i++) { dbContractDetail[i] = ContractDetail.ToDBContractDetail(_detail[i]); } return DBContract.Add(_contractorId, _currency, _createdBy, _description, ToString(ContractStatus.Active), _start, _end, _rate, Amount, dbContractDetail); } return -1; }
public static int AddPaidWork(int contractorId, string currency, string createdBy, string description, string status, DateTime start, DateTime end, decimal rate, decimal amount, double advance, DBContractDetail[] listDetail, List<Dictionary<string, object>> paymentPlan) { string prefix = DBHelper.Instance.TablePrefix; SqlConnection connection = new SqlConnection(DBHelper.Instance.ConnectionString); SqlTransaction transaction; SqlCommand command = new SqlCommand(); int identity = -1; connection.Open(); transaction = connection.BeginTransaction(); command.Connection = connection; command.Transaction = transaction; try { command.CommandText = string.Format("INSERT INTO {0}Contrato ", prefix) + "(IdContratista,CodigoMoneda,Monto,FechaCreacion,UsuarioCreador,FechaInicio,FechaFin,TipoCambio,Glosa,Estado)" + " VALUES " + string.Format("({0},'{1}',{2},GETDATE(),'{3}','{4}','{5}',{6},'{7}','{8}')", contractorId, currency, DBConverter.ToSafeDecimal(amount), createdBy, DBConverter.ToSafeDate(start), DBConverter.ToSafeDate(end), DBConverter.ToSafeDecimal(rate), description, status) + ";SELECT Id FROM uContrato WHERE Id=@@IDENTITY"; identity = (int)command.ExecuteScalar(); foreach (DBContractDetail detail in listDetail) { command.CommandText = "INSERT INTO uContratoDetalle " + "(IdProyecto,IdBloque,IdObra,IdGrupo,IdItem,IdSubItem,IdContrato,AvanceInicial,PrecioReal,Precio)" + " VALUES " + string.Format("({0},{1},{2},{3},{4},{5},{6},{7},{8},{8})", detail.ProjectId, detail.BlockId, detail.WorkId, detail.GroupId, detail.ItemId, detail.SubItemId, identity, detail.Progress, DBConverter.ToSafeDecimal(detail.Price)); command.ExecuteNonQuery(); } command.CommandText = string.Format("INSERT INTO {0}Pago ", prefix) + "(CodigoMoneda,Fecha,Monto,TipoCambio,Usuario)" + " VALUES " + string.Format("('{0}',GETDATE(),{1},{2},'{3}')", currency, DBConverter.ToSafeDecimal(advance), DBConverter.ToSafeDecimal(rate), createdBy) + string.Format(";SELECT Id FROM {0}Pago WHERE Id=@@IDENTITY", prefix); int identityPayment = (int)command.ExecuteScalar(); command.CommandText = string.Format("INSERT INTO {0}ContratoObraVendida ", prefix) + "(IdContrato,IdPago)" + " VALUES " + string.Format("({0},{1})", identity, identityPayment); command.ExecuteNonQuery(); foreach (Dictionary<string, object> itemPlan in paymentPlan) { command.CommandText = string.Format("INSERT INTO {0}PlanPagoContrato ", prefix) + "(IdContrato,Fecha,Monto,CondicionAvance)" + " VALUES " + string.Format("({0},'{1}',{2},{3})", identity, DBConverter.ToSafeDate((DateTime)itemPlan["Date"]), DBConverter.ToSafeDecimal((double)itemPlan["Amount"]), (int)itemPlan["Condition"]); command.ExecuteNonQuery(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); identity = -1; } connection.Close(); command.Dispose(); transaction.Dispose(); connection.Dispose(); return identity; }