private void ProcessErpAccounts(IList<Account> list)
        {

            if (list == null)
                return;


            DaoFactory Factory = new DaoFactory();

            Account qAcc = null;
            AccountAddress curLine;
            AccountTypeRelation curAccType;


            foreach (Account e in list)
            {
                try
                {


                    qAcc = new Account();
                    qAcc.Company = e.Company;
                    qAcc.AccountCode = e.AccountCode;
                    qAcc.BaseType = e.BaseType;

                    //Evalua si la entidad ya existe 
                    IList<Account> exList = Factory.DaoAccount().Select(qAcc);
                    e.ModDate = DateTime.Now;
                    e.ModifiedBy = WmsSetupValues.SystemUser;

                    //Si existe
                    if (exList.Count == 0)
                    {
                        e.CreationDate = DateTime.Now;
                        e.CreatedBy = WmsSetupValues.SystemUser;
                        Factory.DaoAccount().Save(e);
                    }
                    else
                    {
                        e.AccountID = exList.First().AccountID;
                        e.CreatedBy = exList.First().CreatedBy;
                        e.CreationDate = exList.First().CreationDate;

                        //Preservar
                        e.UserDefine1 = exList.First().UserDefine1; //Shipping Mails


                        //Evaluar los Account Types
                        int i = 0;
                        foreach (AccountTypeRelation line in e.AccountTypes)
                        {
                            curAccType = new AccountTypeRelation();
                            curAccType.Account = e;
                            curAccType.ErpCode = line.ErpCode;
                            curAccType.AccountType = line.AccountType;
                            IList<AccountTypeRelation> listLines = Factory.DaoAccountTypeRelation().Select(curAccType);

                            if (listLines.Count > 0)
                            {
                                e.AccountTypes[i].ModDate = DateTime.Now;
                                e.AccountTypes[i].ModifiedBy = WmsSetupValues.SystemUser;
                                e.AccountTypes[i].CreationDate = listLines.First().CreationDate;
                                e.AccountTypes[i].CreatedBy = listLines.First().CreatedBy;
                                e.AccountTypes[i].RowID = listLines.First().RowID;
                            }
                            else
                            {
                                e.AccountTypes[i].CreationDate = DateTime.Now;
                                e.AccountTypes[i].CreatedBy = WmsSetupValues.SystemUser;
                            }

                            i++;
                        }


                        //Evaluar los document Lines
                        i = 0;
                        foreach (AccountAddress line in e.AccountAddresses)
                        {
                            curLine = new AccountAddress();
                            curLine.Account = e;
                            curLine.ErpCode = line.ErpCode;
                            IList<AccountAddress> listLines = Factory.DaoAccountAddress().Select(curLine);

                            if (listLines.Count > 0)
                            {
                                e.AccountAddresses[i].ModDate = DateTime.Now;
                                e.AccountAddresses[i].ModifiedBy = WmsSetupValues.SystemUser;
                                e.AccountAddresses[i].AddressID = listLines.First().AddressID;
                                e.AccountAddresses[i].CreationDate = listLines.First().CreationDate;
                                e.AccountAddresses[i].CreatedBy = listLines.First().CreatedBy;
                            }
                            else
                            {
                                e.AccountAddresses[i].CreationDate = DateTime.Now;
                                e.AccountAddresses[i].CreatedBy = WmsSetupValues.SystemUser;
                            }

                            i++;
                        }

                        Factory.DaoAccount().Update(e);
                    }

                }
                catch (Exception ex)
                {
                    Factory.Rollback();
                    ExceptionMngr.WriteEvent("ProcessErpAccounts:" + qAcc.Name, ListValues.EventType.Fatal, ex, null, ListValues.ErrorCategory.Business);
                    ////throw;
                }
            }


        }