Beispiel #1
0
        // Added by Bharat on 12/May/2017
        public JsonResult GetMailData(string fields)
        {
            string retJSON = "";

            if (Session["ctx"] != null)
            {
                VAdvantage.Utility.Ctx ctx = Session["ctx"] as Ctx;
                int R_MailText_ID;
                R_MailText_ID = Util.GetValueOfInt(fields);
                MMailText mt       = new MMailText(ctx, R_MailText_ID, null);
                string    mailText = mt.GetMailText();
                retJSON = JsonConvert.SerializeObject(mailText);
            }
            return(Json(retJSON, JsonRequestBehavior.AllowGet));
        }
Beispiel #2
0
        }       //	prepare

        /// <summary>
        /// Perform Process.
        /// </summary>
        /// <returns> Message</returns>
        protected override String DoIt()
        {
            log.Info("R_MailText_ID=" + _R_MailText_ID);
            //	Mail Test
            _MailText = new MMailText(GetCtx(), _R_MailText_ID, Get_TrxName());
            if (_MailText.GetR_MailText_ID() == 0)
            {
                throw new Exception("Not found @R_MailText_ID@=" + _R_MailText_ID);
            }
            //	Client Info
            _client = MClient.Get(GetCtx());
            if (_client.GetAD_Client_ID() == 0)
            {
                throw new Exception("Not found @AD_Client_ID@");
            }
            if (_client.GetSmtpHost() == null || _client.GetSmtpHost().Length == 0)
            {
                throw new Exception("No SMTP Host found");
            }
            //
            if (_AD_User_ID > 0)
            {
                _from = new MUser(GetCtx(), _AD_User_ID, Get_TrxName());
                if (_from.GetAD_User_ID() == 0)
                {
                    throw new Exception("No found @AD_User_ID@=" + _AD_User_ID);
                }
            }
            log.Fine("From " + _from);
            //long start = System.currentTimeMillis();
            long start = CommonFunctions.CurrentTimeMillis();

            if (_R_InterestArea_ID > 0)
            {
                SendInterestArea();
            }
            if (_C_BP_Group_ID > 0)
            {
                SendBPGroup();
            }
            return("@Created@=" + _counter + ", @Errors@=" + _errors + " - "
                   + (CommonFunctions.CurrentTimeMillis() - start) + "ms");
        }       //	doIt
Beispiel #3
0
        /// <summary>
        /// Prepare notice message.
        /// </summary>
        /// <param name="list">list of the values changed.</param>
        private void prepareNotificMsg(List <String> list)
        {
            if (mailText_ID == 0)
            {
                message = new StringBuilder();
                //		UpdatedBy: Joe
                int   UpdatedBy = GetCtx().GetAD_User_ID();
                MUser from      = MUser.Get(GetCtx(), UpdatedBy);
                if (from != null)
                {
                    message.Append(Msg.Translate(GetCtx(), "UpdatedBy")).Append(": ")
                    .Append(from.GetName());
                }
                //		LastAction/Created: ...
                if (_req.GetDateLastAction() != null)
                {
                    message.Append("\n").Append(Msg.Translate(GetCtx(), "DateLastAction"))
                    .Append(": ").Append(_req.GetDateLastAction());
                }
                else
                {
                    message.Append("\n").Append(Msg.Translate(GetCtx(), "Created"))
                    .Append(": ").Append(_req.GetCreated());
                }
                //	Changes
                for (int i = 0; i < list.Count; i++)
                {
                    X_R_Request req = new X_R_Request(GetCtx(), 0, null);

                    String columnName = (String)list[i];
                    message.Append("\n").Append(Msg.GetElement(GetCtx(), columnName))
                    .Append(": ").Append(_reqAction.getColumnValue(columnName))
                    .Append(" -> ").Append(_req.getColumnValue(columnName));
                }
                //	NextAction
                if (_req.GetDateNextAction() != null)
                {
                    message.Append("\n").Append(Msg.Translate(GetCtx(), "DateNextAction"))
                    .Append(": ").Append(_req.GetDateNextAction());
                }
                message.Append(SEPARATOR)
                .Append(_req.GetSummary());
                if (_req.GetResult() != null)
                {
                    message.Append("\n----------\n").Append(_req.GetResult());
                }
                message.Append(_req.GetMailTrailer(null));
            }
            else
            {
                message = new StringBuilder();

                MMailText text = new MMailText(GetCtx(), mailText_ID, null);
                text.SetPO(_req, true); //Set _Po Current value
                subject += _req.GetDocumentNo() + ": " + text.GetMailHeader();

                message.Append(text.GetMailText(true));
                if (_req.GetDateNextAction() != null)
                {
                    message.Append("\n").Append(Msg.Translate(GetCtx(), "DateNextAction"))
                    .Append(": ").Append(_req.GetDateNextAction());
                }

                // message.Append(GetMailTrailer(null));
            }
        }
Beispiel #4
0
        /// <summary>
        /// Process
        /// </summary>
        /// <returns>info</returns>
        protected override String DoIt()
        {
            log.Info("C_DunningRun_ID=" + _C_DunningRun_ID + ",R_MailText_ID=" + _R_MailText_ID
                     + ", EmailPDF=" + _EMailPDF + ",IsOnlyIfBPBalance=" + _IsOnlyIfBPBalance);

            //	Need to have Template
            if (_EMailPDF && _R_MailText_ID == 0)
            {
                throw new Exception("@NotFound@: @R_MailText_ID@");
            }
            String    subject = "";
            MMailText mText   = null;

            if (_EMailPDF)
            {
                mText = new MMailText(GetCtx(), _R_MailText_ID, Get_TrxName());
                if (_EMailPDF && mText.Get_ID() == 0)
                {
                    throw new Exception("@NotFound@: @R_MailText_ID@ - " + _R_MailText_ID);
                }
                subject = mText.GetMailHeader();
            }
            //
            MDunningRun run = new MDunningRun(GetCtx(), _C_DunningRun_ID, Get_TrxName());

            if (run.Get_ID() == 0)
            {
                throw new Exception("@NotFound@: @C_DunningRun_ID@ - " + _C_DunningRun_ID);
            }
            //	Print Format on Dunning Level
            MDunningLevel level = new MDunningLevel(GetCtx(), run.GetC_DunningLevel_ID(), Get_TrxName());
            //MPrintFormat format = MPrintFormat.Get(GetCtx(), level.GetDunning_PrintFormat_ID(), false);

            MClient client = MClient.Get(GetCtx());

            int count  = 0;
            int errors = 0;

            MDunningRunEntry[] entries = run.GetEntries(false);
            for (int i = 0; i < entries.Length; i++)
            {
                MDunningRunEntry entry = entries[i];
                if (_IsOnlyIfBPBalance && Env.Signum(entry.GetAmt()) <= 0)
                {
                    continue;
                }
                //	To BPartner
                MBPartner bp = new MBPartner(GetCtx(), entry.GetC_BPartner_ID(), Get_TrxName());
                if (bp.Get_ID() == 0)
                {
                    AddLog(entry.Get_ID(), null, null, "@NotFound@: @C_BPartner_ID@ " + entry.GetC_BPartner_ID());
                    errors++;
                    continue;
                }
                //	To User
                MUser to = new MUser(GetCtx(), entry.GetAD_User_ID(), Get_TrxName());
                if (_EMailPDF)
                {
                    if (to.Get_ID() == 0)
                    {
                        AddLog(entry.Get_ID(), null, null, "@NotFound@: @AD_User_ID@ - " + bp.GetName());
                        errors++;
                        continue;
                    }
                    else if (to.GetEMail() == null || to.GetEMail().Length == 0)
                    {
                        AddLog(entry.Get_ID(), null, null, "@NotFound@: @EMail@ - " + to.GetName());
                        errors++;
                        continue;
                    }
                }
                //	BP Language
                //Language language =Language.getLoginLanguage();		//	Base Language
                Language language = Env.GetLoginLanguage(GetCtx());

                String tableName = "C_Dunning_Header_v";
                if (client.IsMultiLingualDocument())
                {
                    tableName += "t";
                    String AD_Language = bp.GetAD_Language();
                    if (AD_Language != null)
                    {
                        //language =language.getLanguage(AD_Language);
                    }
                }
                // format.SetLanguage(language);
                // format.SetTranslationLanguage(language);
                //	query
                Query query = new Query(tableName);
                query.AddRestriction("C_DunningRunEntry_ID", Query.EQUAL,
                                     entry.GetC_DunningRunEntry_ID());

                //	Engine
                //PrintInfo info = new PrintInfo(
                //    bp.GetName(),
                //    X_C_DunningRunEntry.Table_ID,
                //    entry.GetC_DunningRunEntry_ID(),
                //    entry.GetC_BPartner_ID());
                //info.SetDescription(bp.GetName() + ", Amt=" + entry.GetAmt());
                //ReportEngine re = new ReportEngine(GetCtx(), format, query, info);
                bool printed = false;
                if (_EMailPDF)
                {
                    EMail email = client.CreateEMail(to.GetEMail(), to.GetName(), null, null);
                    if (email == null || !email.IsValid())
                    {
                        AddLog(entry.Get_ID(), null, null,
                               "@RequestActionEMailError@ Invalid EMail: " + to);
                        errors++;
                        continue;
                    }
                    mText.SetUser(to);  //	variable context
                    mText.SetBPartner(bp);
                    mText.SetPO(entry);
                    String message = mText.GetMailText(true);
                    if (mText.IsHtml())
                    {
                        email.SetMessageHTML(mText.GetMailHeader(), message);
                    }
                    else
                    {
                        email.SetSubject(mText.GetMailHeader());
                        email.SetMessageText(message);
                    }
                    //
                    //File attachment = re.GetPDF(File.createTempFile("Dunning", ".pdf"));
                    //log.Fine(to + " - " + attachment);
                    //email.AddAttachment(attachment);
                    //
                    String    msg = email.Send();
                    MUserMail um  = new MUserMail(mText, entry.GetAD_User_ID(), email);
                    um.Save();
                    if (msg.Equals(EMail.SENT_OK))
                    {
                        AddLog(entry.Get_ID(), null, null,
                               bp.GetName() + " @RequestActionEMailOK@");
                        count++;
                        printed = true;
                    }
                    else
                    {
                        AddLog(entry.Get_ID(), null, null,
                               bp.GetName() + " @RequestActionEMailError@ " + msg);
                        errors++;
                    }
                }
                else
                {
                    //re.print();
                    count++;
                    printed = true;
                }
                if (printed)
                {
                    entry.SetProcessed(true);
                    entry.Save();
                    DunningLevelConsequences(level, entry);
                }
            }   //	for all dunning letters
            if (errors == 0)
            {
                run.SetProcessed(true);
                run.Save();
            }

            if (_EMailPDF)
            {
                return("@Sent@=" + count + " - @Errors@=" + errors);
            }
            return("@Printed@=" + count);
        }
Beispiel #5
0
        }       //	prepare

        /// <summary>
        /// Perrform Process.
        /// </summary>
        /// <returns>Message</returns>
        protected override String DoIt()
        {
            //	Need to have Template
            if (_EMailPDF && _R_MailText_ID == 0)
            {
                throw new Exception("@NotFound@: @R_MailText_ID@");
            }
            log.Info("C_BPartner_ID=" + _C_BPartner_ID
                     + ", C_Invoice_ID=" + _C_Invoice_ID
                     + ", IsSOTrx=" + _IsSOTrx
                     + ", EmailPDF=" + _EMailPDF + ",R_MailText_ID=" + _R_MailText_ID
                     + ", DateInvoiced=" + _dateInvoiced_From + "-" + _dateInvoiced_To
                     + ", DocumentNo=" + _DocumentNo_From + "-" + _DocumentNo_To
                     + ", IncludeDrafts=" + _IncludeDraftInvoices);

            MMailText mText = null;

            if (_R_MailText_ID != 0)
            {
                mText = new MMailText(GetCtx(), _R_MailText_ID, Get_TrxName());
                if (mText.Get_ID() != _R_MailText_ID)
                {
                    throw new Exception("@NotFound@: @R_MailText_ID@ - " + _R_MailText_ID);
                }
            }

            //	Too broad selection
            if (_C_BPartner_ID == 0 && _C_Invoice_ID == 0 && _dateInvoiced_From == null && _dateInvoiced_To == null &&
                _DocumentNo_From == null && _DocumentNo_To == null)
            {
                throw new Exception("@RestrictSelection@");
            }

            MClient client = MClient.Get(GetCtx());

            //	Get Info
            StringBuilder sql = new StringBuilder(
                "SELECT i.C_Invoice_ID,bp.AD_Language,c.IsMultiLingualDocument,"                           //	1..3
                //	Prio: 1. BPartner 2. DocType, 3. PrintFormat (Org)	//	see ReportCtl+MInvoice
                + " COALESCE(bp.Invoice_PrintFormat_ID, dt.AD_PrintFormat_ID, pf.Invoice_PrintFormat_ID)," //	4
                + " dt.DocumentCopies+bp.DocumentCopies,"                                                  //	5
                + " bpc.AD_User_ID, i.DocumentNo,"                                                         //	6..7
                + " bp.C_BPartner_ID "                                                                     //	8
                + "FROM C_Invoice i"
                + " INNER JOIN C_BPartner bp ON (i.C_BPartner_ID=bp.C_BPartner_ID)"
                + " LEFT OUTER JOIN AD_User bpc ON (i.AD_User_ID=bpc.AD_User_ID)"
                + " INNER JOIN AD_Client c ON (i.AD_Client_ID=c.AD_Client_ID)"
                + " INNER JOIN AD_PrintForm pf ON (i.AD_Client_ID=pf.AD_Client_ID)"
                + " INNER JOIN C_DocType dt ON (i.C_DocType_ID=dt.C_DocType_ID)")
                                .Append(" WHERE pf.AD_Org_ID IN (0,i.AD_Org_ID) AND "); //	more them 1 PF

            if (_C_Invoice_ID != 0)
            {
                sql.Append("i.C_Invoice_ID=").Append(_C_Invoice_ID);
            }
            else
            {
                if (_IsSOTrx)
                {
                    sql.Append("i.IsSOTrx='Y'");
                }
                else
                {
                    sql.Append("i.IsSOTrx='N'");
                }

                if (!_IncludeDraftInvoices)
                {
                    sql.Append("AND i.DocStatus NOT IN ('DR')");
                }
                if (_C_BPartner_ID != 0)
                {
                    sql.Append(" AND i.C_BPartner_ID=").Append(_C_BPartner_ID);
                }
                //	Date Invoiced
                if (_dateInvoiced_From != null && _dateInvoiced_To != null)
                {
                    sql.Append(" AND TRUNC(i.DateInvoiced,'DD') BETWEEN ")
                    .Append(DataBase.DB.TO_DATE(_dateInvoiced_From, true)).Append(" AND ")
                    .Append(DataBase.DB.TO_DATE(_dateInvoiced_To, true));
                }
                else if (_dateInvoiced_From != null)
                {
                    sql.Append(" AND TRUNC(i.DateInvoiced,'DD') >= ")
                    .Append(DataBase.DB.TO_DATE(_dateInvoiced_From, true));
                }
                else if (_dateInvoiced_To != null)
                {
                    sql.Append(" AND TRUNC(i.DateInvoiced,'DD') <= ")
                    .Append(DataBase.DB.TO_DATE(_dateInvoiced_To, true));
                }
                //	Document No
                else if (_DocumentNo_From != null && _DocumentNo_To != null)
                {
                    sql.Append(" AND i.DocumentNo BETWEEN ")
                    .Append(DataBase.DB.TO_STRING(_DocumentNo_From)).Append(" AND ")
                    .Append(DataBase.DB.TO_STRING(_DocumentNo_To));
                }
                else if (_DocumentNo_From != null)
                {
                    sql.Append(" AND ");
                    if (_DocumentNo_From.IndexOf('%') == -1)
                    {
                        sql.Append("i.DocumentNo >= ")
                        .Append(DataBase.DB.TO_STRING(_DocumentNo_From));
                    }
                    else
                    {
                        sql.Append("i.DocumentNo LIKE ")
                        .Append(DataBase.DB.TO_STRING(_DocumentNo_From));
                    }
                }
            }
            sql.Append(" ORDER BY i.C_Invoice_ID, pf.AD_Org_ID DESC");          //	more than 1 PF record
            log.Finer(sql.ToString());

            MPrintFormat format = null;
            int          old_AD_PrintFormat_ID = -1;
            int          old_C_Invoice_ID      = -1;
            int          C_BPartner_ID         = 0;
            int          count  = 0;
            int          errors = 0;


            IDataReader idr = null;

            try
            {
                idr = DataBase.DB.ExecuteReader(sql.ToString(), null, null);

                while (idr.Read())
                {
                    int C_Invoice_ID = Utility.Util.GetValueOfInt(idr[0]);
                    if (C_Invoice_ID == old_C_Invoice_ID)//Multiple pg Records
                    {
                        continue;
                    }
                    old_C_Invoice_ID = C_Invoice_ID;


                    //	Set Language when enabled
                    //Language language = Language.getLoginLanguage();
                    Language language = Env.GetLoginLanguage(GetCtx());
                    //	Base Language
                    //    String AD_Language = rs.getString(2);
                    String AD_Language = Utility.Util.GetValueOfString(idr[1]);
                    //    if (AD_Language != null && "Y".equals(rs.getString(3)))
                    if (AD_Language != null && "Y".Equals(idr[2]))
                    {
                        //language = Language.getLanguage(AD_Language);
                        language = Language.GetLanguage(AD_Language);
                    }


                    //    int AD_PrintFormat_ID = rs.getInt(4);
                    int AD_PrintFormat_ID = Utility.Util.GetValueOfInt(idr[3]);
                    //    int copies = rs.getInt(5);
                    int copies = Utility.Util.GetValueOfInt(idr[4]);
                    if (copies == 0)
                    {
                        copies = 1;
                    }
                    //    int AD_User_ID = rs.getInt(6);
                    int AD_User_ID = Utility.Util.GetValueOfInt(idr[5]);
                    //    MUser to = new MUser (getCtx(), AD_User_ID, get_TrxName());
                    MUser to = new MUser(GetCtx(), AD_User_ID, Get_TrxName());
                    //    String DocumentNo = rs.getString(7);
                    String DocumentNo = Utility.Util.GetValueOfString(idr[6]);
                    //    C_BPartner_ID = rs.getInt(8);
                    C_BPartner_ID = Utility.Util.GetValueOfInt(idr[7]);
                    //    //
                    //    String documentDir = client.getDocumentDir();
                    String documentDir = client.GetDocumentDir();
                    //    if (documentDir == null || documentDir.length() == 0)
                    if (documentDir == null || documentDir.Length == 0)
                    {
                        documentDir = ".";
                    }

                    if (_EMailPDF && (to.Get_ID() == 0 || to.GetEMail() == null || to.GetEMail().Length == 0))
                    {
                        AddLog(C_Invoice_ID, null, null, DocumentNo + " @RequestActionEMailNoTo@");
                        errors++;
                        continue;
                    }
                    if (AD_PrintFormat_ID == 0)
                    {
                        AddLog(C_Invoice_ID, null, null, DocumentNo + " No Print Format");
                        errors++;
                        continue;
                    }
                    //	Get Format & Data
                    if (AD_PrintFormat_ID != old_AD_PrintFormat_ID)
                    {
                        format = MPrintFormat.Get(GetCtx(), AD_PrintFormat_ID, false);
                        old_AD_PrintFormat_ID = AD_PrintFormat_ID;
                    }

                    format.SetLanguage(language);
                    format.SetTranslationLanguage(language);
                    //    //	query
                    Query query = new Query("C_Invoice_Header_v");
                    query.AddRestriction("C_Invoice_ID", Query.EQUAL, C_Invoice_ID);

                    //	Engine
                    //PrintInfo info = new PrintInfo(
                    //    DocumentNo,
                    //    X_C_Invoice.Table_ID,
                    //    C_Invoice_ID,
                    //    C_BPartner_ID);
                    //info.SetCopies(copies);
                    //ReportEngine re = new ReportEngine(GetCtx(), format, query, info);

                    Boolean printed = false;
                    if (_EMailPDF)
                    {
                        String subject = mText.GetMailHeader() + " - " + DocumentNo;
                        EMail  email   = client.CreateEMail(to.GetEMail(), to.GetName(), subject, null);
                        if (email == null || !email.IsValid())
                        {
                            AddLog(C_Invoice_ID, null, null,
                                   DocumentNo + " @RequestActionEMailError@ Invalid EMail: " + to);
                            errors++;
                            continue;
                        }
                        mText.SetUser(to);                //	Context
                        mText.SetBPartner(C_BPartner_ID); //	Context
                        mText.SetPO(new MInvoice(GetCtx(), C_Invoice_ID, Get_TrxName()));
                        String message = mText.GetMailText(true);
                        if (mText.IsHtml())
                        {
                            email.SetMessageHTML(subject, message);
                        }
                        else
                        {
                            email.SetSubject(subject);
                            email.SetMessageText(message);
                        }
                        //
                        //File invoice = null;
                        FileInfo invoice = null;
                        if (!Ini.IsClient())
                        {
                            //invoice = new File(MInvoice.GetPDFFileName(documentDir, C_Invoice_ID));
                            invoice = new FileInfo(MInvoice.GetPDFFileName(documentDir, C_Invoice_ID));
                        }
                        //File attachment = re.getPDF(invoice);
                        //FileInfo attachment = re.GetPDF(invoice);

                        // log.Fine(to + " - " + attachment);
                        // email.AddAttachment(attachment);

                        //
                        String    msg = email.Send();
                        MUserMail um  = new MUserMail(mText, GetAD_User_ID(), email);
                        um.Save();
                        if (msg.Equals(EMail.SENT_OK))
                        {
                            AddLog(C_Invoice_ID, null, null,
                                   DocumentNo + " @RequestActionEMailOK@ - " + to.GetEMail());
                            count++;
                            printed = true;
                        }
                        else
                        {
                            AddLog(C_Invoice_ID, null, null,
                                   DocumentNo + " @RequestActionEMailError@ " + msg
                                   + " - " + to.GetEMail());
                            errors++;
                        }
                    }
                    else
                    {
                        // re.Print();
                        count++;
                        printed = true;
                    }
                    //	Print Confirm
                    if (printed)
                    {
                        StringBuilder sb = new StringBuilder("UPDATE C_Invoice "
                                                             + "SET DatePrinted=SysDate, IsPrinted='Y' WHERE C_Invoice_ID=")
                                           .Append(C_Invoice_ID);
                        //int no = DataBase.DB.ExecuteUpdateMultiple(sb.ToString(), Get_TrxName());
                        int no = DataBase.DB.ExecuteQuery(sb.ToString(), null, Get_TrxName());
                    }
                } //	for all entries
            }
            catch (Exception e)
            {
                log.Log(Level.SEVERE, sql.ToString(), e);
                //throw new Exception (e);
            }
            finally
            {
                idr.Close();
            }
            //
            if (_EMailPDF)
            {
                return("@Sent@=" + count + " - @Errors@=" + errors);
            }
            return("@Printed@=" + count);
        } //	doIt