private static MailMessage MountContractBilling(DataConnector connector, int contractId, int subContractId, Boolean enviarDemonstrativo) { ContractDAO contractDAO = new ContractDAO(connector.MySqlConnection); SubContractDAO subContractDAO = new SubContractDAO(connector.MySqlConnection); ContractItemDAO contractItemDAO = new ContractItemDAO(connector.MySqlConnection); EquipmentDAO equipmentDAO = new EquipmentDAO(connector.SqlServerConnection); ContractDTO contract = contractDAO.GetContract(contractId); String contractItems = ""; List<SubContractDTO> subContractList = subContractDAO.GetSubContracts("contrato_id=" + contract.id); foreach (SubContractDTO subContract in subContractList) { List<ContractItemDTO> itemList = contractItemDAO.GetItems("subcontrato_id = " + subContract.id); String equipmentEnumeration = ""; foreach (ContractItemDTO contractItem in itemList) { if (!String.IsNullOrEmpty(equipmentEnumeration)) equipmentEnumeration += ", "; equipmentEnumeration += contractItem.codigoCartaoEquipamento; } List<EquipmentDTO> equipamentList = equipmentDAO.GetEquipments(equipmentEnumeration); String serialNumbers = ""; foreach (EquipmentDTO equipment in equipamentList) { if (!String.IsNullOrEmpty(serialNumbers)) serialNumbers += ", "; serialNumbers += equipment.ManufSN; } if (String.IsNullOrEmpty(serialNumbers)) serialNumbers = "Nenhum item encontrado"; contractItems += subContract.siglaTipo + " - " + serialNumbers + "<br/>"; } String cliente = ObterNomeCliente(connector, contract.pn); String parcela = ObterParcelaContrato(connector, contract); String vendedor = ObterNomeVendedor(connector, contract); DateTime dataVencimento = MountDate(contract.diaVencimento, contract.referencialVencimento); String billingInfo = "Contrato: " + contract.numero + "<br/>" + "Itens: " + contractItems + "<br/>" + "Cliente: " + cliente + "<br/>" + "Parcela: " + parcela + "<br/>" + "Vendedor: " + vendedor + "<br/>" + "Data Vencimento: " + dataVencimento.ToString("dd/MM/yyyy") + "<br/>"; List<String> reportFiles = new List<String>(); if (enviarDemonstrativo) reportFiles = BuildReportFiles("faturamentoContrato.php", "contractId=" + contractId + "&subContractId=" + subContractId); MailMessage mailMessage = new MailMessage(); mailMessage.Subject = "Faturamento de contrato"; mailMessage.Body = "Email gerado automaticamente, não responder." + "<br/><br/>" + billingInfo; foreach (String filename in reportFiles) mailMessage.Attachments.Add(new Attachment(filename)); return mailMessage; }
private static Boolean AreContractsActive(DataConnector connector, MailingDTO mailing) { Boolean active; ContractDAO contractDAO = new ContractDAO(connector.MySqlConnection); ContractItemDAO contractItemDAO = new ContractItemDAO(connector.MySqlConnection); // Faturamento de um contrato apenas if (mailing.codigoContrato != 0) { ContractDTO contract = contractDAO.GetContract(mailing.codigoContrato); active = (contract.status != 3) && (contract.status != 4); return active; } // Caso contrário é o faturamento de todos os equipamentos do cliente (um ou mais contratos) active = false; List<ContractItemDTO> itemList = contractItemDAO.GetItems("businessPartnerCode = '" + mailing.businessPartnerCode + "'"); foreach (ContractItemDTO item in itemList) { ContractDTO contract = contractDAO.GetContract(item.contrato_id); if ((contract.status != 3) && (contract.status != 4)) active = true; } return active; }
private static MailMessage MountBusinessPartnerBilling(DataConnector connector, String businessPartnerCode, Boolean enviarDemonstrativo) { ContractDAO contractDAO = new ContractDAO(connector.MySqlConnection); SubContractDAO subContractDAO = new SubContractDAO(connector.MySqlConnection); ContractItemDAO contractItemDAO = new ContractItemDAO(connector.MySqlConnection); EquipmentDAO equipmentDAO = new EquipmentDAO(connector.SqlServerConnection); List<ContractItemDTO> itemList = contractItemDAO.GetItems("businessPartnerCode = '" + businessPartnerCode + "'"); Dictionary<int, List<ContractItemDTO>> itemGroups = new Dictionary<int, List<ContractItemDTO>>(); foreach (ContractItemDTO item in itemList) { // Cria um novo grupo caso não encontre um grupo para este subcontrato if (!itemGroups.ContainsKey(item.subContrato_id)) itemGroups.Add(item.subContrato_id, new List<ContractItemDTO>()); // Adiciona o item ao grupo do subcontrato List<ContractItemDTO> group = itemGroups[item.subContrato_id]; group.Add(item); } String billingInfo = "Cliente: " + ObterNomeCliente(connector, businessPartnerCode) + "<br/><br/>"; foreach (int subContractId in itemGroups.Keys) { List<ContractItemDTO> group = itemGroups[subContractId]; String itemEnumeration = ""; foreach (ContractItemDTO contractItem in group) { if (!String.IsNullOrEmpty(itemEnumeration)) itemEnumeration += ", "; itemEnumeration += contractItem.codigoCartaoEquipamento; } List<EquipmentDTO> equipamentList = equipmentDAO.GetEquipments(itemEnumeration); String equipmentEnumeration = ""; foreach (EquipmentDTO equipment in equipamentList) { if (!String.IsNullOrEmpty(equipmentEnumeration)) equipmentEnumeration += ", "; equipmentEnumeration += equipment.ManufSN; } SubContractDTO subContract = subContractDAO.GetSubContract(subContractId); ContractDTO contract = contractDAO.GetContract(subContract.contrato_id); Boolean activeContract = true; if ((contract.status == 3) || (contract.status == 4)) activeContract = false; if (activeContract) // Não fatura caso o status do contrato seja finalizado ou cancelado { String parcela = ObterParcelaContrato(connector, contract); String vendedor = ObterNomeVendedor(connector, contract); DateTime dataVencimento = MountDate(contract.diaVencimento, contract.referencialVencimento); String contractInfo = "Contrato: " + contract.numero + "<br/>" + "Parcela: " + parcela + "<br/>" + "Vendedor: " + vendedor + "<br/>" + "Data Vencimento: " + dataVencimento.ToString("dd/MM/yyyy") + "<br/>"; String subContractInfo = subContract.siglaTipo + " - " + equipmentEnumeration + "<br/>"; billingInfo += contractInfo + subContractInfo + "<br/>"; } } List<String> reportFiles = new List<String>(); if (enviarDemonstrativo) reportFiles = BuildReportFiles("faturamentoCliente.php", "businessPartnerCode=" + businessPartnerCode); MailMessage mailMessage = new MailMessage(); mailMessage.Subject = "Faturamento de contrato"; mailMessage.Body = "Email gerado automaticamente, não responder." + "<br/><br/>" + billingInfo; foreach(String filename in reportFiles) mailMessage.Attachments.Add(new Attachment(filename)); return mailMessage; }