Ar Cash Receipts using BOI

Hi community!

I need some help.  I have an almost perfect code here in C#  posting a payment in cash receipts.  The only problem is that the batch amount is duplicated.  The batch total is $520.00 instead of $260.00.

What am I doing wrong?

Here is the code:

using (DispatchObject receivePayments = new DispatchObject(pvx.InvokeMethod("NewObject", "AR_CashReceipts_bus", oSS.GetObject()))) // AR_CashReceipts_bus //
{
cont = 0;
string error2 = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Verificando el receipt buss" + error2);
using (DispatchObject oDepositObject = new DispatchObject(receivePayments.GetProperty("oDepositObject")))
{
decimal Total = 0;
Order order = new Order();
var retId = 0;
object[] useBatch = new object[] { true };
var p = Convert.ToInt32(oDepositObject.GetProperty("nBatchEnabled"));
if (p > 0)
{
Logger.Log("Batch Enabled");
object[] batchName = new object[] { "" };
letter = "L";
string num = "";
num = letter + DateTime.Today.Month.ToString() + DateTime.Today.Day.ToString();
Logger.Log(num);
string BatchPrivateField = "N";
string BatchComment = "LaceupPayments";
object[] batchNoObject = new object[] { num, BatchPrivateField, BatchComment };
oDepositObject.InvokeMethodByRef("nSelectNewBatch", batchNoObject);
oDepositObject.InvokeMethod("nSetValue", batchNoObject);
oDepositObject.InvokeMethod("nSetValue", "BatchNo$", batchNoObject[0].ToString());
}
object[] nextDepositId = new object[] { "depositId" };
retId = Convert.ToInt32(oDepositObject.InvokeMethodByRef("nGetNextDepositNo", nextDepositId));
retId = Convert.ToInt32(oDepositObject.InvokeMethod("nSetKey", nextDepositId));
oDepositObject.InvokeMethod("nSetValue", "DepositDate$", date);
retId = Convert.ToInt32(oDepositObject.InvokeMethod("nSetValue", "CashDepositAmt", paymentsCheck.Sum(x => x.Amount)));// oDepositObject.InvokeMethod("nSetValue", "CreditDepositAmt", transaction.Amount); retId = Convert.ToInt32(oDepositObject.InvokeMethod("nSetValue", "CashDepositAmt", transaction.Amount));
if (retId == 0)
{
string error = (string)oDepositObject.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Devolvio error escribiendo el amount en el deposit");
Logger.Log(error);
}
// if (transaction.PaymentMethod == "Cash")
// {
retId = Convert.ToInt32(oDepositObject.InvokeMethod("nSetValue", "BankCode$", checkbank));
// Logger.Log("is cash");
// }
// else
// {
//
// Logger.Log("is check");
// }
Logger.Log("Escribir el deposito check bank" + checkbank);
retId = Convert.ToInt32(oDepositObject.InvokeMethod("nSetValue", "DepositDesc$", "Laceup Payment"));
retId = Convert.ToInt32(oDepositObject.InvokeMethod("nWrite"));
string error1 = (string)oDepositObject.InvokeMethod("sLastErrorMsg", null);
Logger.Log("verificando si hay error agregando el deposit " + error1);
string lastclient = "";
foreach (var transaction in paymentsCheck)
{
if (transaction.OrderUniqueId != null)
{
if (transaction.OrderUniqueId != "")
{
order = context.Orders.FirstOrDefault(x => x.UniqueId == transaction.OrderUniqueId);
if (order != null)
{
if (order.ExportedId == null)
continue;
}

}
}
if (lastclient != transaction.Client.OriginalId)
{
lastclient = transaction.Client.OriginalId;
var parts = transaction.Client.OriginalId.Split(new char[] { '-' });
if (salesman == null)
salesman = context.Salesmen.Find(transaction.SalesmanId);
Logger.Log(parts[0] + " " + parts[1]);
Logger.Log(transaction.Client.Name);
Logger.Log("deposit id " + nextDepositId[0].ToString());
retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "DepositNo$", nextDepositId[0].ToString()));//("nSetKey", "DepositNo$", nextDepositId[0])); nextDepositId //"nSetKey", nextDepositId //receivePayments. // nextDepositId[0].ToString()
if (retId == 0)
{
Logger.Log("Devolvio error escribiendo el deposit no");
string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log(error);
//continue;
}
retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "ARDivisionNo$", parts[0]));//
if (retId == 0)
{
string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Devolvio error escribiendo el customer div no " + error);
}
retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "CustomerNo$", parts[1]));//
if (retId == 0)
{
string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Devolvio error escribiendo el customer no " + error);
}
retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "CustomerName$", transaction.Client.Name.Substring(10)));//
if (retId == 0)
{
string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Devolvio error escribiendo el customer Name " + error);
}
receivePayments.InvokeMethod("nSetValue", "DepositType", "C");

// if (transaction.PaymentMethod == "Cash")
// {
Logger.Log("Escribi el check no cash");
retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "CheckNo$", transaction.CheckNumber));
if (retId == 0)
{
string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Devolvio error esctribiendo el CashChekNo " + error);
}
// }
// else
// {
// Logger.Log("Escribi el check cash");
// retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "CheckNo$", transaction.CheckNumber));
// if (retId == 0)
// {
// string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
// Logger.Log("Devolvio error esctribiendo el ChekNo " + error);
// }
// }
receivePayments.InvokeMethod("nSetKey");
Total = paymentsCheck.Where(x => x.Client.OriginalId == lastclient).Sum(x => x.Amount);
retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "PostingAmt", Total));// retId = Convert.ToInt32(receivePayments.InvokeMethod("nSetValue", "PostingAmt", transaction.Amount));
if (retId == 0)
{
string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Devolvio error esctribiendo el postingamount " + error);
}
}
DispatchObject depositLine = new DispatchObject(receivePayments.GetProperty("oLines"));
retId = Convert.ToInt32(depositLine.InvokeMethod("nAddLine"));
if (retId == 0)
{
Logger.Log("Devolvio error agregando la linea");
string error = (string)depositLine.InvokeMethod("sLastErrorMsg", null);
Logger.Log(error);
}
Logger.Log("Invoice Number: " + transaction.InvoiceNumber + " if no use order exported id: " + order.ExportedId);
if (transaction.InvoiceNumber != "")
retId = Convert.ToInt32(depositLine.InvokeMethod("nSetValue", "InvoiceNo$", transaction.InvoiceNumber));//,
else
{
if (order.ExportedId != null)
retId = Convert.ToInt32(depositLine.InvokeMethod("nSetValue", "InvoiceNo$", order.ExportedId));
}
if (retId == 0)
{
//
string error = (string)depositLine.InvokeMethod("sLastErrorMsg", null);
Logger.Log("Devolvio error esctribiendo el invoice number " + error);
// Logger.Log(error);
//continue;
}
retId = Convert.ToInt32(depositLine.InvokeMethod("nSetValue", "AmountPosted", transaction.Amount));
if (retId == 0)
{
Logger.Log("Devolvio error esctribiendo el amount");
string error = (string)oSS.InvokeMethod("sLastErrorMsg", null);
Logger.Log(error);
//continue;
}

retId = Convert.ToInt32(depositLine.InvokeMethod("nWrite"));
if (retId == 0)
{
Logger.Log("Devolvio error esctribiendo la linea");
string error = (string)depositLine.InvokeMethod("sLastErrorMsg", null);
Logger.Log(error);
//continue;
}
if (cont == paymentsCheck.Count || transaction.Client.OriginalId != paymentsCheck[cont].Client.Name)
{
retId = Convert.ToInt32(receivePayments.InvokeMethod("nWrite"));
if (retId == 0)
{
Logger.Log("Devolvio error escribiendo el pago");
string error = (string)receivePayments.InvokeMethod("sLastErrorMsg", null);
Logger.Log(error);
}
}
transaction.ExportedDate = DateTime.Now;
transaction.Exported = true;
retValue.Add(string.Format("Payment for invoice {0} was exported", transaction.InvoiceNumber));
}

Parents Reply Children
No Data