Sorry;

public virtual void Calculate(CalculationMethod method)
        {
            if (DocumentType.Equals(DocumentType.PosProceedsVoucher))
            {
                if (Pos!=null)
                {
                    Cash = Pos.Partner;
                }
            }

            if (method.Equals(CalculationMethod.Currency))
            {
                LocalAmount = Amount*ExchangeRate;
                AccountAmount = LocalAmount/AccountExchangeRate;

            }
            else if (method.Equals(CalculationMethod.LocalCurrency))
            {
                Amount = LocalAmount / ExchangeRate;
                AccountAmount = LocalAmount/AccountExchangeRate;
            }
            else if (method.Equals(CalculationMethod.AccountCurrency))
            {
                LocalAmount = AccountAmount * AccountExchangeRate;
                Amount = LocalAmount / ExchangeRate;
            }

            if (DocumentType.Equals(DocumentType.CreditCardPaymentVoucher))
            {
                Transactions.Clear();
                if (CreditCard!=null)
                {
                    Cash = CreditCard.Partner;
                }
                var installmentAmount = Amount / Installment;
                var installmentDate = PaymentDate;
                for (int i = 0; i < Installment; i++)
                {
                    PartnerTransaction receivableTransaction = new
PartnerTransaction();
                    receivableTransaction.Partner = Cash;
                    receivableTransaction.Receivable = installmentAmount;
                    receivableTransaction.LocalReceivable =
installmentAmount * ExchangeRate;
                    receivableTransaction.Currency = Currency;
                    receivableTransaction.LocalCurrency = LocalCurrency;
                    //receivableTransaction.Payment = this;
                    receivableTransaction.TransactionDateTime = PaymentDate;
                    receivableTransaction.ExchangeRate = ExchangeRate;
                    receivableTransaction.Expiry = installmentDate;
                    Transactions.Add(receivableTransaction);
                    installmentDate = installmentDate.AddMonths(1);
                }

                PartnerTransaction debtTransaction = new
PartnerTransaction();
                debtTransaction.Partner = Partner;
                debtTransaction.Debt = AccountAmount;
                debtTransaction.LocalDebt = LocalAmount;
                debtTransaction.Currency = AccountCurrency;
                debtTransaction.LocalCurrency = LocalCurrency;
                //debtTransaction.Payment = this;
                debtTransaction.TransactionDateTime = PaymentDate;
                debtTransaction.ExchangeRate = ExchangeRate;
                debtTransaction.Expiry = DateTime.Today;
                Transactions.Add(debtTransaction);
            }
            Save();
}


public virtual M Save()
        {
            bool isCurrentActivatedTransaction = false;
            try
            {

                OnBeforeSave();
                if (!Session.Transaction.IsActive)
                {
                    BeginTransaction();
                    isCurrentActivatedTransaction = true;
                }
                try
                {
                     Session.SaveOrUpdate(this);
                }
                catch (NonUniqueObjectException)
                {
                    Session.Merge(this);
                }

                if (isCurrentActivatedTransaction)
                {
                    Commit();
                }
                try
                {
                    Session.Refresh(this);
                }
                catch (Exception)
                {
                }
                OnAfterSave();
            }
            catch (Exception)
            {
                if (isCurrentActivatedTransaction)
                {
                    Rollback();
                }
                throw;
            }
            return (M)Convert.ChangeType(this, typeof(M));
        }


2014-06-17 13:51 GMT+03:00 Ricardo Peres <[email protected]>:

> What code are you using?
>
> RP
>
>
> On Tuesday, June 17, 2014 10:53:36 AM UTC+1, Atilla İlhan KARTAL wrote:
>>
>> Dear All;
>>
>> When i recreate a collection in Payment Entity saveOrUpdate method
>> throwed this exception. My Releation Mappings is AllDeleteOrphan but i dont
>> resolve this problem.
>>
>> I am working on this error two days ago. I'm going crazy :'(
>>
>> I tested this solution method.
>>
>> 1- Manual handle cascade operation.
>>     a-Delete exists PartnerTransactions on before save
>>     b-Save Payment entity
>>     c- Save new PartnerTransactions
>>
>>  but throw object references an unsaved transient instance - save the
>> transient instance before merge.
>>
>> What do you think about it.?
>>
>> object references an unsaved transient instance - save the transient
>> instance before flushing or set cascade action for the property to
>> something that would make it autosave. Type: 
>> Core.PartnerManagement.PartnerTransaction,
>> Entity: Core.PartnerManagement.PartnerTransaction
>>
>>
>>         public class PaymentMap : ClassMap<Payment>
>>         {
>>             public PaymentMap()
>>             {
>>                 Table("SALES_TB_PAYMENT");
>>                 SchemaAction.None();
>>                 Id(x => x.ID, "ID").GeneratedBy.Identity();
>>                 Map(x => x.PaymentDate, "PaymentDate");
>>                 Map(x => x.Serial, "Serial");
>>                 Map(x => x.DocumentNumber, "DocumentNumber");
>>                 References(x => x.Partner, "PartnerId");
>>                 References(x => x.Cash, "CashId");
>>                 References(x => x.Pos, "PosId");
>>                 References(x => x.DocumentType, "DocumentTypeId");
>>                 Map(x => x.Description, "Description");
>>
>>                 Map(x => x.ExchangeRate, "ExchangeRate");
>>                 Map(x => x.AccountExchangeRate, "AccountExchangeRate");
>>                 Map(x => x.Amount, "Amount");
>>                 Map(x => x.AccountAmount, "AccountAmount");
>>                 Map(x => x.LocalAmount, "LocalAmount");
>>                 Map(x => x.BankSEQ, "BankSEQ");
>>                 References(x => x.Bank, "BankId");
>>                 Map(x => x.IBAN, "IBAN");
>>                 Map(x => x.AccountNo, "AccountNo");
>>                 Map(x => x.BankBranch, "BankBranch");
>>                 Map(x => x.ReferenceNo, "ReferenceNo");
>>                 Map(x => x.SlipNo, "SlipNo");
>>                 Map(x => x.RewardAmount, "RewardAmount");
>>                 Map(x => x.ComissionRate, "ComissionRate");
>>                 Map(x => x.ComissionAmount, "ComissionAmount");
>>                 Map(x => x.LocalComissionAmount, "LocalComissionAmount");
>>                 Map(x => x.Installment, "Installment");
>>
>>                 References(x => x.Currency, "CurrencyId");
>>                 References(x => x.LocalCurrency, "LocalCurrencyId");
>>                 References(x => x.AccountCurrency, "AccountCurrencyId");
>>                 References(x => x.CreditCard, "CreditCardId");
>>                 HasMany(x => x.Transactions)
>>                     .KeyColumn("PaymentId")
>>                     .Cascade.AllDeleteOrphan()
>>                     .AsBag();
>>             }
>>         }
>>
>>
>>         public class PartnerTransactionMap : ClassMap<PartnerTransaction>
>>         {
>>             public PartnerTransactionMap()
>>             {
>>                 Table("CORE_TB_PARTNERTRANSACTION");
>>                 SchemaAction.None();
>>                 Id(x => x.ID, "ID").GeneratedBy.Identity().
>> UnsavedValue(0L);
>>                 Map(x => x.TransactionDateTime, "TransactionDateTime");
>>                 References(x => x.Partner, "PartnerId");
>>                 References(x => x.Currency, "CurrencyId");
>>                 References(x => x.LocalCurrency, "LocalCurrencyId");
>>                 Map(x => x.ExchangeRate, "ExchangeRate");
>>                 Map(x => x.Debt, "Debt");
>>                 Map(x => x.Receivable, "Receivable");
>>                 Map(x => x.LocalDebt, "LocalDebt");
>>                 Map(x => x.LocalReceivable, "LocalReceivable");
>>                 Map(x => x.IsLock, "IsLock");
>>                 Map(x => x.Expiry, "Expiry");
>>                 Map(x => x.OpenBalance, "OpenBalance");
>>                 Map(x => x.LocalOpenBalance, "LocalOpenBalance");
>>                 References(x => x.Invoice, "InvoiceId");
>>                 References(x => x.Payment, "PaymentId");
>>                 References(x => x.Voucher, "VoucherId");
>>             }
>>         }
>>
>> --
>> Atilla İlhan KARTAL
>> Web Application & Software Architect
>> (Java & PHP & Registered Android Developer)
>> Kuşadası / Aydın / Turkey
>> www.atillailhankartal.com.tr
>> twitter.com/TrojanMyth
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/nhusers.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Atilla İlhan KARTAL
Web Application & Software Architect
(Java & PHP & Registered Android Developer)
Kuşadası / Aydın / Turkey
www.atillailhankartal.com.tr
twitter.com/TrojanMyth

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.

Reply via email to