Bueno, pues todo esto es lo que hace este tocho código que véis aquí debajo. No es perfecto, pero puede ahorrar algo de tecleo.
public static Guid CrearContrato(
Guid idCuenta,
Guid idPlantillaContrato,
int numeroMinutos,
int importe)
{
// Buscar los datos del cliente
ColumnSet cs = new ColumnSet();
cs.Attributes = new string[] { "name", "address1_addressid" };
account cuenta =
crm.Retrieve(EntityName.account.ToString(), idCuenta, cs) as account;
// Buscar los datos de la plantilla
contracttemplate plantilla =
crm.Retrieve(EntityName.contracttemplate.ToString(), idPlantilla,
new AllColumns());
// Crear un título para el contrato
string tituloContrato = String.Format(
"{0} - {1} {2} min ({3:MM/yy})",
cuenta.name, plantilla.name, numeroMinutos, DateTime.Now);
// Establecer fechas (contrato de 10 años de duración)
string fechaInicio =
DateTime.Now.ToString("yyyy/M/ddT00:00:00");
string fechaFin =
DateTime.Now.AddYears(10).ToString("yyyy/M/ddT00:00:00");
// Crear el contrato
contract contrato = new contract();
contrato.contracttemplateid = new Lookup();
contrato.contracttemplateid.Value = idPlantillaContrato;
contrato.customerid = new Customer();
contrato.customerid.Value = idCuenta;
contrato.customerid.type = EntityName.account.ToString();
contrato.billingcustomerid = contrato.customerid;
contrato.activeon = new CrmDateTime();
contrato.activeon.Value = fechaInicio;
contrato.expireson = new CrmDateTime();
contrato.expireson.Value = fechaFin;
contrato.billingstarton = new CrmDateTime();
contrato.billingstarton.Value = fechaInicio;
contrato.billingendon = new CrmDateTime();
contrato.billingendon.Value = fechaFin;
contrato.serviceaddress = new Lookup();
contrato.serviceaddress.Value = cuenta.address1_addressid.Value;
contrato.billtoaddress = new Lookup();
contrato.billtoaddress.Value = cuenta.address1_addressid.Value;
contrato.title = tituloContrato;
Guid idContrato = crm.Create(contrato);
// Crear la línea de detalle del contrato
contractdetail linea = new contractdetail();
linea.title = "Linea " + tituloContrato;
linea.contractid = new Lookup();
linea.contractid.Value = idContrato;
linea.activeon = new CrmDateTime();
linea.activeon.Value = fechaInicio;
linea.expireson = new CrmDateTime();
linea.expireson.Value = fechaFin;
linea.customerid = new Customer();
linea.customerid.type = EntityName.account.ToString();
linea.customerid.Value = idCuenta;
linea.totalallotments = new CrmNumber();
linea.totalallotments.Value = numeroMinutos;
linea.price = new CrmMoney();
linea.price.Value = importe;
Guid idLinea = crm.Create(linea);
return idContrato;
}
1 comentario:
Excelente .. muchas gracias!
Publicar un comentario