Beispiel #1
0
        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);
        }
        public IEnumerable <NormalContractItem> NormalContractItemsFromContract(int contractId)
        {
            ContractItemDAO contractItemDAO = new ContractItemDAO(connectionString);
            IEnumerable <NormalContractItem> normalContractItems = contractItemDAO.NormalContractItemsFromContract(contractId);

            return(normalContractItems);
        }
Beispiel #3
0
        private void SaveContractMasterItems(MasterContract masterContract)
        {
            ContractItemDAO    contractItemDAO = new ContractItemDAO(connectionString);
            MasterContractItem result;

            foreach (MasterContractItem contractMasterItem in masterContract.MasterContractItems)
            {
                if (contractMasterItem.Id == 0)
                {
                    contractMasterItem.CreationUser = masterContract.CreationUser;
                    result = contractItemDAO.InsertContractMasterItem(masterContract.Id, contractMasterItem);
                }
                else
                {
                    contractMasterItem.ModifyUser = masterContract.ModifyUser;
                    contractMasterItem.ContractId = masterContract.Id;
                    result = contractItemDAO.UpdateContractMasterItem(contractMasterItem);
                }
                if (result != null)
                {
                    contractMasterItem.Id = result.Id;
                }
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        public void UpdateContract()
        {
            int wstep;

            try
            {
                EpTransaction tran = DataManager.BeginTransaction();
                try
                {
                    wstep = 100 / contractHeader.Count;
                    foreach (ZCONTRACT_HDR x in contractHeader)
                    {
                        ContractHeader hrd = new ContractHeader();
                        hrd.ContractNumber     = x.Ebeln;
                        hrd.ContractDate       = Convert.ToInt64(x.Bedat);
                        hrd.ContractCategory   = x.Bstyp;
                        hrd.DocumentType       = x.Bsart;
                        hrd.ContractValue      = x.Ktwrt;
                        hrd.CreatedBy          = x.Ernam;
                        hrd.Currency           = x.Waers;
                        hrd.ExchangeRate       = x.Wkurs;
                        hrd.InternalReference  = "";
                        hrd.PaymentTerms       = x.Zterm;
                        hrd.PurchasingGroup    = x.Ekgrp;
                        hrd.SalesContactPerson = x.Verkf;
                        hrd.SupplierId         = x.Lifnr;
                        hrd.Telephone          = x.Telf1;
                        hrd.ValidityEnd        = Convert.ToInt64(x.Kdate);
                        hrd.ValidityStart      = Convert.ToInt64(x.Kdatb);

                        if (ContractHeaderDAO.RetrieveByKey(tran, x.Ebeln) != null)
                        {
                            ContractHeaderDAO.Update(tran, hrd);
                        }
                        else
                        {
                            ContractHeaderDAO.Insert(tran, hrd);
                        }

                        wstr = wstr + x.Ebeln + ", ";
                        aForm.getProgressBar().Increment(wstep);
                    }

                    this.setParameters();
                    wstep = 100 / contractItem.Count;
                    foreach (ZCONTRACT_ITM x in contractItem)
                    {
                        ContractItem itm = new ContractItem();
                        itm.ContractNumber       = x.Ebeln;
                        itm.ContractItemSequence = x.Ebelp;
                        itm.Description          = x.Txz01;
                        itm.MaterialGroup        = x.Matkl;
                        itm.MaterialNumber       = x.Matnr;
                        itm.NetValue             = x.Brtwr;
                        itm.Plant             = x.Werks;
                        itm.PricePerUnit      = x.Peinh;
                        itm.Requisitioner     = x.Afnam;
                        itm.RequisitionNumber = x.Banfn;
                        itm.RFQNumber         = x.Anfnr;
                        itm.TargetQuantity    = x.Ktmng;
                        itm.UnitOfMeasure     = x.Meins;
                        itm.UnitPrice         = x.Netpr;

                        if (ContractItemDAO.RetrieveByKey(tran, x.Ebeln, x.Ebelp) != null)
                        {
                            ContractItemDAO.Update(tran, itm);
                        }
                        else
                        {
                            ContractItemDAO.Insert(tran, itm);
                        }

                        wstr = wstr + x.Ebeln + ", ";
                        aForm.getProgressBar().Increment(wstep);
                    }
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    throw (ex);
                }
                finally
                {
                    tran.Dispose();
                }

                this.RemoveContractDetails();
            }
            catch (Exception ex)
            {
                Utility.ExceptionLog(ex);
                throw (ex);
            }
        }