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); }
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); }