Beispiel #1
0
        protected override string DoIt()
        {
            batchid = GetBatchId();
            if (batchid > 0)
            {
                StringBuilder          _sql       = new StringBuilder();
                MVA009Batch            batch      = new MVA009Batch(GetCtx(), batchid, Get_TrxName());
                MBankAccount           _bankacc   = new MBankAccount(GetCtx(), batch.GetC_BankAccount_ID(), Get_TrxName());
                MVA009PaymentMethod    _paymthd   = null;
                MVA009BatchLines       line       = null;
                MVA009BatchLineDetails lineDetail = null;
                decimal dueamt = 0;
                _sql.Clear();
                _sql.Append(@"Select cp.ad_client_id, cp.ad_org_id,CI.C_Bpartner_ID, ci.c_invoice_id, cp.c_invoicepayschedule_id, cp.duedate, 
                              cp.dueamt, cp.discountdate, cp.discountamt,cp.va009_paymentmethod_id,ci.c_currency_id , doc.DocBaseType
                              From C_Invoice CI inner join C_InvoicePaySchedule CP ON CI.c_invoice_id= CP.c_invoice_id
                              INNER JOIN C_DocType doc ON doc.C_DocType_ID = CI.C_DocType_ID  Where ci.ispaid='N' AND cp.va009_ispaid='N' AND cp.C_Payment_ID IS NULL
                              AND CI.IsActive = 'Y' and ci.docstatus in ('CO','CL') AND cp.VA009_ExecutionStatus NOT IN ( 'Y','J') AND CI.AD_Client_ID = " + GetAD_Client_ID() + " AND CI.AD_Org_ID = " + GetAD_Org_ID());

                if (_C_BPartner_ID > 0)
                {
                    _sql.Append("  and CI.C_Bpartner_ID=" + _C_BPartner_ID);
                }
                if (_C_invoice_ID > 0)
                {
                    _sql.Append("  and CI.C_invoice_ID=" + _C_invoice_ID);
                }
                if (_paySchedule_ID > 0)
                {
                    _sql.Append(" AND CP.C_InvoicePaySchedule_ID=" + _paySchedule_ID);
                }
                if (_docType > 0)
                {
                    _sql.Append(" ANd CI.C_DocType_ID=" + _docType);
                }
                else
                {
                    _sql.Append(" ANd doc.DocBaseType IN ('API' , 'ARI' , 'APC' , 'ARC') ");
                }
                if (_paymentMethod > 0)
                {
                    _sql.Append(" And CP.VA009_PaymentMethod_ID=" + _paymentMethod);
                    _paymthd = new MVA009PaymentMethod(GetCtx(), _paymentMethod, Get_TrxName());
                    _trigger = _paymthd.IsVA009_IsMandate();
                }

                if (_DateDoc_From != null && _DateDoc_To != null)
                {
                    _sql.Append(" and cp.duedate BETWEEN  ");
                    _sql.Append(GlobalVariable.TO_DATE(_DateDoc_From, true) + " AND ");
                    _sql.Append(GlobalVariable.TO_DATE(_DateDoc_To, true));
                }
                else if (_DateDoc_From != null && _DateDoc_To == null)
                {
                    _sql.Append(" and cp.duedate >=" + GlobalVariable.TO_DATE(_DateDoc_From, true));
                }
                else if (_DateDoc_From == null && _DateDoc_To != null)
                {
                    _sql.Append(" and cp.duedate <=" + GlobalVariable.TO_DATE(_DateDoc_To, true));
                }
                else if (C_ConversionType_ID > 0)
                {
                    _sql.Append("  AND C_ConversionType_ID=" + C_ConversionType_ID);
                }

                if (VA009_IsSameCurrency == true)
                {
                    _sql.Append(" AND CI.C_Currency_ID =" + _bankacc.GetC_Currency_ID());
                }

                _sql.Append(" Order by CI.C_Bpartner_ID asc , doc.docbasetype ");

                DataSet ds = new DataSet();
                ds = DB.ExecuteDataset(_sql.ToString(), null, Get_TrxName());
                if (ds.Tables != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        if ((Util.GetValueOfDecimal(ds.Tables[0].Rows[i]["DueAmt"])) == 0)
                        {
                            continue;
                        }
                        // if invoice is of AP Invoice and AP Credit Memo then make a single Batch line
                        if (docBaseType == "API" || docBaseType == "APC")
                        {
                            if (_BPartner == Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_BPartner_ID"]) &&
                                ("API" == Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]) || "APC" == Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"])))
                            {
                                line = new MVA009BatchLines(GetCtx(), _VA009_BatchLine_ID, Get_TrxName());
                            }
                            else
                            {
                                line = null;
                            }
                        }
                        // if invoice is of AR Invoice and AR Credit Memo then make a single Batch line
                        else if (docBaseType == "ARI" || docBaseType == "ARC")
                        {
                            if (_BPartner == Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_BPartner_ID"]) &&
                                ("ARI" == Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]) || "ARC" == Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"])))
                            {
                                line = new MVA009BatchLines(GetCtx(), _VA009_BatchLine_ID, Get_TrxName());
                            }
                            else
                            {
                                line = null;
                            }
                        }
                        //if (_BPartner == Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_BPartner_ID"]) && docBaseType == Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]))
                        //{
                        //    line = new MVA009BatchLines(GetCtx(), _VA009_BatchLine_ID, null);
                        //}
                        // else
                        if (line == null)
                        {
                            line = new MVA009BatchLines(GetCtx(), 0, Get_TrxName());
                            line.SetAD_Client_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["Ad_Client_ID"]));
                            line.SetAD_Org_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["Ad_Org_ID"]));
                            line.SetVA009_Batch_ID(batch.GetVA009_Batch_ID());

                            _BPartner   = Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_BPartner_ID"]);
                            docBaseType = Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]);

                            line.SetC_BPartner_ID(_BPartner);
                            if (_trigger == true)
                            {
                                _sql.Clear();
                                _sql.Append("Select VA009_BPMandate_id from C_BPartner Where C_BPartner_ID=" + _BPartner + " AND IsActive = 'Y' AND AD_Client_ID = " + GetAD_Client_ID());
                                DataSet ds1 = new DataSet();
                                ds1 = DB.ExecuteDataset(_sql.ToString(), null, Get_TrxName());
                                if (ds1.Tables != null && ds1.Tables.Count > 0 && ds1.Tables[0].Rows.Count > 0)
                                {
                                    line.SetVA009_BPMandate_ID(Util.GetValueOfInt(ds1.Tables[0].Rows[0]["VA009_BPMandate_id"]));
                                }
                            }
                            if (line.Save())
                            {
                                line.SetProcessed(true);
                                line.Save();
                                _VA009_BatchLine_ID = line.GetVA009_BatchLines_ID();
                            }
                            else
                            {
                                _BPartner           = 0;
                                _VA009_BatchLine_ID = 0;
                            }
                        }
                        lineDetail = new MVA009BatchLineDetails(GetCtx(), 0, Get_TrxName());
                        lineDetail.SetAD_Client_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["Ad_Client_ID"]));
                        lineDetail.SetAD_Org_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["Ad_Org_ID"]));
                        lineDetail.SetVA009_BatchLines_ID(line.GetVA009_BatchLines_ID());
                        lineDetail.SetC_Invoice_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_Invoice_ID"]));
                        lineDetail.SetC_InvoicePaySchedule_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_InvoicePaySchedule_id"]));
                        lineDetail.SetDueDate(Util.GetValueOfDateTime(ds.Tables[0].Rows[i]["DueDate"]));
                        lineDetail.SetC_ConversionType_ID(C_ConversionType_ID);
                        dueamt = (Util.GetValueOfDecimal(ds.Tables[0].Rows[i]["DueAmt"]));
                        if (Util.GetValueOfDateTime(ds.Tables[0].Rows[i]["DiscountDate"]) >= Util.GetValueOfDateTime(batch.GetVA009_DocumentDate()))
                        {
                            dueamt = dueamt - (Util.GetValueOfDecimal(ds.Tables[0].Rows[i]["DiscountAmt"]));
                            //  145-2.88
                        }

                        bool issamme = true; decimal comvertedamt = 0;
                        if (Util.GetValueOfInt(ds.Tables[0].Rows[i]["c_currency_id"]) == _bankacc.GetC_Currency_ID())
                        {
                            issamme = true;
                        }
                        else
                        {
                            issamme = false;
                        }

                        if (Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]) == "APC" || Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]) == "ARC")
                        {
                            lineDetail.SetDueAmt(-1 * dueamt);
                            comvertedamt = (-1 * dueamt);
                        }
                        else
                        {
                            lineDetail.SetDueAmt(dueamt);
                            comvertedamt = (dueamt);
                        }
                        if (issamme == false)
                        {
                            comvertedamt = 0;
                            comvertedamt = MConversionRate.Convert(GetCtx(), dueamt, Util.GetValueOfInt(ds.Tables[0].Rows[i]["c_currency_id"]), _bankacc.GetC_Currency_ID(), DateTime.Now, C_ConversionType_ID, GetCtx().GetAD_Client_ID(), GetCtx().GetAD_Org_ID());
                            lineDetail.SetC_Currency_ID(_bankacc.GetC_Currency_ID());
                            if (Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]) == "APC" || Util.GetValueOfString(ds.Tables[0].Rows[i]["DocBaseType"]) == "ARC")
                            {
                                comvertedamt = (-1 * comvertedamt);
                            }
                        }
                        else
                        {
                            lineDetail.SetC_Currency_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["c_currency_id"]));
                        }

                        lineDetail.SetVA009_ConvertedAmt(comvertedamt);
                        lineDetail.SetVA009_PaymentMethod_ID(Util.GetValueOfInt(ds.Tables[0].Rows[i]["va009_paymentmethod_id"]));
                        if (Util.GetValueOfDateTime(ds.Tables[0].Rows[i]["DiscountDate"]) < Util.GetValueOfDateTime(batch.GetVA009_DocumentDate()))
                        {
                            lineDetail.SetDiscountDate(null);
                            lineDetail.SetDiscountAmt(0);
                        }
                        else if (Util.GetValueOfDateTime(ds.Tables[0].Rows[i]["DiscountDate"]) >= Util.GetValueOfDateTime(batch.GetVA009_DocumentDate()))
                        {
                            lineDetail.SetDiscountDate(Util.GetValueOfDateTime(ds.Tables[0].Rows[i]["DiscountDate"]));
                            lineDetail.SetDiscountAmt(Util.GetValueOfDecimal(ds.Tables[0].Rows[i]["DiscountAmt"]));
                        }

                        if (!lineDetail.Save())
                        {
                            //return"BatchLine Not Saved";
                        }
                        else
                        {
                            lineDetail.SetProcessed(true);
                            MInvoicePaySchedule _invpay = new MInvoicePaySchedule(GetCtx(), Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_InvoicePaySchedule_id"]), Get_TrxName());
                            _invpay.SetVA009_ExecutionStatus("Y");
                            _invpay.Save();
                            lineDetail.Save();
                        }
                    }
                    batch.SetVA009_GenerateLines("Y");
                    batch.SetProcessed(true);
                    batch.Save();
                    if (_paymentMethod != 0)
                    {
                        //_paymthd = new MVA009PaymentMethod(GetCtx(), _paymentMethod, Get_TrxName());
                        batch.SetVA009_PaymentMethod_ID(_paymentMethod);
                        batch.SetVA009_PaymentRule(_paymthd.GetVA009_PaymentRule());
                        batch.SetVA009_PaymentTrigger(_paymthd.GetVA009_PaymentTrigger());
                        batch.Save();
                        if (_paymthd.GetVA009_PaymentRule() == "M")
                        {
                            VA009_CreatePayments payment = new VA009_CreatePayments();
                            payment.DoIt(batch.GetVA009_Batch_ID(), GetCtx(), Get_TrxName(), 0);
                        }
                        else if (_paymthd.GetVA009_PaymentRule() == "E")
                        {
                            VA009_ICICI_Snorkel _Snrkl = new VA009_ICICI_Snorkel();
                            _Snrkl.GetMethod(batch.GetVA009_Batch_ID(), GetCtx(), Get_TrxName());
                        }
                    }
                    return(Msg.GetMsg(GetCtx(), "VA009_BatchLineCrtd"));;
                }
                else
                {
                    DB.ExecuteQuery("DELETE FROM VA009_Batch WHERE VA009_Batch_ID=" + batchid, null, Get_TrxName());

                    return(Msg.GetMsg(GetCtx(), "VA009_BatchLineNotCrtd"));
                }
            }
            else
            {
                DB.ExecuteQuery("DELETE FROM VA009_Batch WHERE VA009_Batch_ID=" + batchid, null, Get_TrxName());

                return(Msg.GetMsg(GetCtx(), "VA009_BatchNotCrtd"));
            }
        }
Beispiel #2
0
        //public bool UploadFileToFTP(string source, string ServerOutput, string destination, string username, string pass, int port, string movepath)
        //{
        //    //string filename = Path.GetFileName(source);
        //    string[] filename = VA009_ICICI_Snorkel.GetFileNames(source);
        //    try
        //    {
        //        foreach (var file in filename)
        //        {
        //            string ftpfullpath = destination;
        //            try
        //            {
        //                if (port > 0)
        //                {
        //                    ftpfullpath = ftpfullpath + ":" + port.ToString();
        //                }
        //                if (ftpfullpath.IndexOf("ftp://") == -1)
        //                {
        //                    ftpfullpath = "ftp://" + ftpfullpath;
        //                }
        //                if (ServerOutput != string.Empty)
        //                {
        //                    if (ServerOutput == "HO")
        //                    {
        //                        ftpfullpath = ftpfullpath + @"/Upload";
        //                    }
        //                    else
        //                        ftpfullpath = ftpfullpath + @"/Areas/VA009/VA009Docs/" + ServerOutput;
        //                }
        //                else
        //                    ftpfullpath = ftpfullpath + @"/Areas/VA009/VA009Docs";
        //                VA009_ICICI_UploadFile.CreateFolderToFTP(ftpfullpath, username, pass);
        //                ftpfullpath += "/" + file;
        //                FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
        //                ftp.Credentials = new NetworkCredential(username, pass);
        //                ftp.KeepAlive = true;
        //                ftp.UseBinary = true;
        //                //ftp.Method = WebRequestMethods.Ftp.UploadFile;
        //                //ServicePointManager.ServerCertificateValidationCallback =
        //                //delegate(object s, X509Certificate certificate,
        //                //     X509Chain chain, SslPolicyErrors sslPolicyErrors)
        //                //{ return true; };
        //                ftp.EnableSsl = false;
        //                if (File.Exists(ftpfullpath))
        //                {
        //                    File.Delete(ftpfullpath);
        //                }
        //                FileStream fs = File.OpenRead(source + @"/" + file);
        //                byte[] buffer = new byte[fs.Length];
        //                fs.Read(buffer, 0, buffer.Length);
        //                fs.Close();
        //                //using (WebResponse response = ftp.GetResponse())
        //                //{
        //                //    using (Stream stream = response.GetResponseStream())
        //                //    {
        //                //        XmlTextReader reader = new XmlTextReader(stream);
        //                //    }
        //                //}
        //                Stream ftpstream = ftp.GetRequestStream();
        //                ftpstream.Write(buffer, 0, buffer.Length);
        //                ftpstream.Close();

        //                //Move in New Folder
        //                File.Move(source + @"/" + file, movepath + @"/" + file);

        //            }
        //            catch (WebException ex)
        //            {
        //                FtpWebResponse response = (FtpWebResponse)ex.Response;
        //                if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
        //                {
        //                    VA009_ICICI_UploadFile.CreateFolderToFTP(ftpfullpath, username, pass);
        //                    FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
        //                    ftp.Credentials = new NetworkCredential(username, pass);

        //                    ftp.KeepAlive = true;
        //                    ftp.UseBinary = true;
        //                    ftp.Method = WebRequestMethods.Ftp.UploadFile;
        //                    //                 ServicePointManager.ServerCertificateValidationCallback =
        //                    //delegate(object s, X509Certificate certificate,
        //                    //         X509Chain chain, SslPolicyErrors sslPolicyErrors)
        //                    //{ return true; };

        //                    ftp.EnableSsl = false;


        //                    FileStream fs = File.OpenRead(source + @"\" + file);
        //                    byte[] buffer = new byte[fs.Length];
        //                    fs.Read(buffer, 0, buffer.Length);
        //                    fs.Close();

        //                    Stream ftpstream = ftp.GetRequestStream();
        //                    ftpstream.Write(buffer, 0, buffer.Length);
        //                    ftpstream.Close();
        //                    File.Move(source + @"/" + file, movepath + @"/" + file);
        //                    //return true;
        //                }
        //                else
        //                {
        //                    response.Close();
        //                    //return false;
        //                }
        //            }
        //            catch (Exception ex)
        //            {
        //                //return false;
        //            }
        //        }
        //        return true;
        //    }
        //    catch (Exception e)
        //    {
        //        return false;
        //    }
        //}

        public bool UploadFileToFTP(string source, string ServerOutput, string destination, string username, string pass, int port, string movepath)
        {
            //string filename = Path.GetFileName(source);
            StringBuilder error = new StringBuilder();
            FtpWebRequest request; string Fname = "", foldername = "";

            string[] filename = VA009_ICICI_Snorkel.GetFileNames(source);
            try
            {
                foreach (var file in filename)
                {
                    string ftpfullpath = destination;
                    try
                    {
                        if (port > 0)
                        {
                            ftpfullpath = ftpfullpath + ":" + port.ToString();
                        }
                        if (ftpfullpath.IndexOf("ftp://") == -1)
                        {
                            ftpfullpath = "ftp://" + ftpfullpath;
                        }
                        if (ServerOutput != string.Empty)
                        {
                            if (ServerOutput == "HO")
                            {
                                foldername = "Upload";
                            }
                            else
                            {
                                int    position = ServerOutput.LastIndexOf('\\');
                                string acc      = ServerOutput.Substring(0, position);
                                foldername  = ServerOutput.Substring(position + 1, ServerOutput.Length - (acc.Length + 1));
                                ftpfullpath = ftpfullpath + @"/Areas/VA009/VA009Docs/" + acc;
                            }
                        }
                        else
                        {
                            ftpfullpath = ftpfullpath + @"/Areas/VA009/VA009Docs";
                        }
                        VA009_ICICI_UploadFile.CreateFolderToFTP(ftpfullpath, username, pass);
                        Fname = source + "\\" + file;

                        FileInfo fileInfo = new FileInfo(Fname);

                        request                     = WebRequest.Create(new Uri(string.Format(@"{0}/{1}/{2}", ftpfullpath, foldername, file))) as FtpWebRequest;
                        request.Method              = WebRequestMethods.Ftp.UploadFile;
                        request.UseBinary           = true;
                        request.UsePassive          = true;
                        request.KeepAlive           = true;
                        request.Credentials         = new NetworkCredential(username, pass);
                        request.ConnectionGroupName = "group";

                        int        buffLength = 2048;
                        byte[]     buff       = new byte[buffLength];
                        int        contentLen;
                        FileStream fileStream = fileInfo.OpenRead();//File.OpenRead(source + @"\" + file);
                        Stream     stream     = request.GetRequestStream();
                        contentLen = fileStream.Read(buff, 0, buffLength);
                        while (contentLen != 0)
                        {
                            stream.Write(buff, 0, contentLen);
                            contentLen = fileStream.Read(buff, 0, buffLength);
                        }
                        stream.Close();
                        fileStream.Close();

                        //Move in New Folder
                        File.Move(source + @"/" + file, movepath + @"/" + file);
                    }
                    catch (WebException ex)
                    {
                        FtpWebResponse response = (FtpWebResponse)ex.Response;
                        if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
                        {
                            FileInfo fileInfo = new FileInfo(Fname);

                            request                     = WebRequest.Create(new Uri(string.Format(@"{0}/{1}/{2}", ftpfullpath, foldername, file))) as FtpWebRequest;
                            request.Method              = WebRequestMethods.Ftp.UploadFile;
                            request.UseBinary           = true;
                            request.UsePassive          = true;
                            request.KeepAlive           = true;
                            request.Credentials         = new NetworkCredential(username, pass);
                            request.ConnectionGroupName = "group";

                            int        buffLength = 2048;
                            byte[]     buff       = new byte[buffLength];
                            int        contentLen;
                            FileStream fileStream = fileInfo.OpenRead();
                            Stream     stream     = request.GetRequestStream();
                            contentLen = fileStream.Read(buff, 0, buffLength);
                            while (contentLen != 0)
                            {
                                stream.Write(buff, 0, contentLen);
                                contentLen = fileStream.Read(buff, 0, buffLength);
                            }
                            stream.Close();
                            fileStream.Close();

                            //Move in New Folder
                            File.Move(source + @"/" + file, movepath + @"/" + file);
                        }
                        else
                        {
                            response.Close();
                            //return false;
                        }
                    }
                    catch (Exception ex)
                    {
                        error.Append("ErrorWhileUploadingFileOnFTP:" + ex.Message);
                        return(false);
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                error.Append("ErrorWhileUploadingFileOnFTP:" + ex.Message);
                return(false);
            }
        }