Search in sources :

Example 1 with MAsset

use of org.compiere.model.MAsset in project adempiere by adempiere.

the class A_Depreciation_Exp_Check method fixDepreciation.

private void fixDepreciation(int A_Asset_ID) {
    MAsset asset = MAsset.get(getCtx(), A_Asset_ID, get_TrxName());
    List<MDepreciationExp> depreciations = getDepreciation(asset);
    // if exist depreciations with period 0 
    if (depreciations.get(0).getA_Period() == 0) {
        fixDepreciationExp(depreciations.get(0), TimeUtil.getMonthLastDay(asset.getAssetServiceDate()));
        Timestamp tms = depreciations.get(0).getDateAcct();
        for (int i = 1; i < depreciations.size(); i++) {
            fixDepreciationExp(depreciations.get(i), TimeUtil.getMonthLastDay(TimeUtil.addMonths(tms, 1)));
            tms = depreciations.get(i).getDateAcct();
        }
    } else {
        fixDepreciationExp(depreciations.get(0), TimeUtil.getMonthLastDay(TimeUtil.addMonths(asset.getAssetServiceDate(), 1)));
        Timestamp tms = depreciations.get(0).getDateAcct();
        for (int i = 1; i < depreciations.size(); i++) {
            fixDepreciationExp(depreciations.get(i), TimeUtil.getMonthLastDay(TimeUtil.addMonths(tms, 1)));
            tms = depreciations.get(i).getDateAcct();
        }
    }
    //
    for (MDepreciationWorkfile wk : MDepreciationWorkfile.forA_Asset_ID(getCtx(), A_Asset_ID, get_TrxName())) {
        wk.setA_Current_Period();
        wk.saveEx();
        addLog("" + wk + ": Period=" + wk.getA_Current_Period() + ", DateAcct=" + wk.getDateAcct());
    }
}
Also used : MDepreciationWorkfile(org.compiere.model.MDepreciationWorkfile) MDepreciationExp(org.compiere.model.MDepreciationExp) MAsset(org.compiere.model.MAsset) Timestamp(java.sql.Timestamp)

Example 2 with MAsset

use of org.compiere.model.MAsset in project adempiere by adempiere.

the class AssetDelivery method sendNoGuaranteeMail.

//	doIt
/**
	 * 	Send No Guarantee EMail
	 * 	@param A_Asset_ID asset
	 * 	@param R_MailText_ID mail to send
	 * 	@return message - delivery errors start with **
	 */
private String sendNoGuaranteeMail(int A_Asset_ID, int R_MailText_ID, String trxName) {
    MAsset asset = new MAsset(getCtx(), A_Asset_ID, trxName);
    if (asset.getAD_User_ID() == 0)
        return "** No Asset User";
    MUser user = new MUser(getCtx(), asset.getAD_User_ID(), get_TrxName());
    if (user.getEMail() == null || user.getEMail().length() == 0)
        return "** No Asset User Email";
    if (m_MailText == null || m_MailText.getR_MailText_ID() != R_MailText_ID)
        m_MailText = new MMailText(getCtx(), R_MailText_ID, get_TrxName());
    if (m_MailText.getMailHeader() == null || m_MailText.getMailHeader().length() == 0)
        return "** No Subject";
    //	Create Mail
    EMail email = m_client.createEMail(user.getEMail(), null, null);
    m_MailText.setPO(user);
    m_MailText.setPO(asset);
    String message = m_MailText.getMailText(true);
    if (m_MailText.isHtml())
        email.setMessageHTML(m_MailText.getMailHeader(), message);
    else {
        email.setSubject(m_MailText.getMailHeader());
        email.setMessageText(message);
    }
    String msg = email.send();
    new MUserMail(m_MailText, asset.getAD_User_ID(), email).saveEx();
    if (!EMail.SENT_OK.equals(msg))
        return "** Not delivered: " + user.getEMail() + " - " + msg;
    //
    return user.getEMail();
}
Also used : MMailText(org.compiere.model.MMailText) MUserMail(org.compiere.model.MUserMail) MAsset(org.compiere.model.MAsset) EMail(org.compiere.util.EMail) MUser(org.compiere.model.MUser)

Example 3 with MAsset

use of org.compiere.model.MAsset in project adempiere by adempiere.

the class AssetDelivery method deliverIt.

//	sendNoGuaranteeMail
/**************************************************************************
	 * 	Deliver Asset
	 * 	@param A_Asset_ID asset
	 * 	@return message - delivery errors start with **
	 */
private String deliverIt(int A_Asset_ID) {
    log.fine("A_Asset_ID=" + A_Asset_ID);
    long start = System.currentTimeMillis();
    //
    MAsset asset = new MAsset(getCtx(), A_Asset_ID, get_TrxName());
    if (asset.getAD_User_ID() == 0)
        return "** No Asset User";
    MUser user = new MUser(getCtx(), asset.getAD_User_ID(), get_TrxName());
    if (user.getEMail() == null || user.getEMail().length() == 0)
        return "** No Asset User Email";
    if (asset.getProductR_MailText_ID() == 0)
        return "** Product Mail Text";
    if (m_MailText == null || m_MailText.getR_MailText_ID() != asset.getProductR_MailText_ID())
        m_MailText = new MMailText(getCtx(), asset.getProductR_MailText_ID(), get_TrxName());
    if (m_MailText.getMailHeader() == null || m_MailText.getMailHeader().length() == 0)
        return "** No Subject";
    //	Create Mail
    EMail email = m_client.createEMail(user.getEMail(), null, null);
    if (!email.isValid()) {
        asset.setHelp(asset.getHelp() + " - Invalid EMail");
        asset.setIsActive(false);
        return "** Invalid EMail: " + user.getEMail();
    }
    if (m_client.isSmtpAuthorization())
        email.createAuthenticator(m_client.getRequestUser(), m_client.getRequestUserPW());
    m_MailText.setUser(user);
    m_MailText.setPO(asset);
    String message = m_MailText.getMailText(true);
    if (m_MailText.isHtml() || m_AttachAsset)
        email.setMessageHTML(m_MailText.getMailHeader(), message);
    else {
        email.setSubject(m_MailText.getMailHeader());
        email.setMessageText(message);
    }
    if (m_AttachAsset) {
        MProductDownload[] pdls = asset.getProductDownloads();
        if (pdls != null) {
            for (int i = 0; i < pdls.length; i++) {
                URI url = pdls[i].getDownloadURL(m_client.getDocumentDir());
                if (url != null)
                    email.addAttachment(url);
            }
        } else
            log.warning("No DowloadURL for A_Asset_ID=" + A_Asset_ID);
    }
    String msg = email.send();
    new MUserMail(m_MailText, asset.getAD_User_ID(), email).saveEx();
    if (!EMail.SENT_OK.equals(msg))
        return "** Not delivered: " + user.getEMail() + " - " + msg;
    MAssetDelivery ad = confirmDelivery(asset, email, user.getAD_User_ID());
    ad.saveEx();
    asset.saveEx();
    //
    log.fine((System.currentTimeMillis() - start) + " ms");
    //	success
    return user.getEMail() + " - " + asset.getProductVersionNo();
}
Also used : MMailText(org.compiere.model.MMailText) MUserMail(org.compiere.model.MUserMail) MProductDownload(org.compiere.model.MProductDownload) MAssetDelivery(org.compiere.model.MAssetDelivery) MAsset(org.compiere.model.MAsset) EMail(org.compiere.util.EMail) MUser(org.compiere.model.MUser) URI(java.net.URI)

Example 4 with MAsset

use of org.compiere.model.MAsset in project adempiere by adempiere.

the class AssetServlet method streamAsset.

//	doPost
/**
	 * 	Stream asset
	 * 	@param request request
	 * 	@param response response
	 * 	@return "" or error message
	 */
protected String streamAsset(HttpServletRequest request, HttpServletResponse response) {
    //	Get Asset ID
    int A_Asset_ID = WebUtil.getParameterAsInt(request, "Asset_ID");
    if (A_Asset_ID == 0) {
        log.fine("No ID)");
        return "No Asset ID";
    }
    byte[] assetInfo = String.valueOf(A_Asset_ID).getBytes();
    //	Get Asset
    Properties ctx = JSPEnv.getCtx(request);
    HttpSession session = request.getSession(true);
    WebEnv.dump(request);
    MAsset asset = new MAsset(ctx, A_Asset_ID, null);
    if (asset.getA_Asset_ID() != A_Asset_ID) {
        log.fine("Asset not found - ID=" + A_Asset_ID);
        return "Asset not found";
    }
    //	Get WebUser & Compare with invoice
    WebUser wu = (WebUser) session.getAttribute(WebUser.NAME);
    if (wu.getC_BPartner_ID() != asset.getC_BPartner_ID()) {
        log.warning("A_Asset_ID=" + A_Asset_ID + " - BP_Invoice=" + asset.getC_BPartner_ID() + " <> BP_User=" + wu.getC_BPartner_ID());
        return "Your asset not found";
    }
    if (!asset.isDownloadable() || wu.isCreditStopHold() || !wu.isEMailVerified())
        return "Asset not downloadable";
    //	Name & URL
    String pd = WebUtil.getParameter(request, "PD");
    String dl_name = null;
    String dl_url = null;
    InputStream in = null;
    int M_ProductDownload_ID = 0;
    if (pd != null && pd.length() > 0) {
        MProductDownload[] pdls = asset.getProductDownloads();
        if (pdls != null) {
            for (int i = 0; i < pdls.length; i++) {
                if (pdls[i].getDownloadURL().indexOf(pd) != -1) {
                    M_ProductDownload_ID = pdls[i].getM_ProductDownload_ID();
                    dl_name = pd;
                    dl_url = pdls[i].getDownloadURL();
                    in = pdls[i].getDownloadStream(ctx.getProperty(WebSessionCtx.CTX_DOCUMENT_DIR));
                    break;
                }
            }
        }
    }
    log.fine(dl_name + " - " + dl_url);
    if (dl_name == null || dl_url == null || in == null)
        return "@NotFound@ @A_Asset_ID@: " + pd;
    /**
		Download SupportContract.pdf for Jorg Janke - jjanke@adempiere.org
		Version = 120 - Lot = . - SerNo = .
		Guarantee Date = 5/30/05
		Thank you for using Adempiere Customer Asset Management
		**/
    String lot = asset.getLot();
    if (lot == null || lot.length() == 0)
        lot = ".";
    String ser = asset.getSerNo();
    if (ser == null || ser.length() == 0)
        ser = ".";
    Object[] args = new Object[] { dl_name, wu.getName() + " - " + wu.getEmail(), asset.getVersionNo(), lot, ser, asset.getGuaranteeDate() };
    String readme = Msg.getMsg(ctx, "AssetDeliveryTemplate", args);
    //	Send File
    MAssetDelivery ad = confirmDelivery(asset, request, wu.getAD_User_ID());
    if (M_ProductDownload_ID != 0)
        ad.setM_ProductDownload_ID(M_ProductDownload_ID);
    ad.setDescription(dl_name);
    //
    float speed = 0;
    try {
        response.setContentType("application/zip");
        response.setHeader("Content-Location", "asset.zip");
        //	response.setContentLength(length);
        //	2k Buffer
        int bufferSize = 2048;
        response.setBufferSize(bufferSize);
        //
        log.fine(in + ", available=" + in.available());
        long time = System.currentTimeMillis();
        //	Zip Output Stream
        ServletOutputStream out = response.getOutputStream();
        //	Servlet out
        ZipOutputStream zip = new ZipOutputStream(out);
        zip.setMethod(ZipOutputStream.DEFLATED);
        zip.setLevel(Deflater.BEST_COMPRESSION);
        zip.setComment(readme);
        //	Readme File
        ZipEntry entry = new ZipEntry("readme.txt");
        entry.setExtra(assetInfo);
        zip.putNextEntry(entry);
        zip.write(readme.getBytes(), 0, readme.length());
        zip.closeEntry();
        //	Payload
        entry = new ZipEntry(dl_name);
        entry.setExtra(assetInfo);
        zip.putNextEntry(entry);
        byte[] buffer = new byte[bufferSize];
        int count = 0;
        int totalSize = 0;
        do {
            //	read delivery
            count = in.read(buffer, 0, bufferSize);
            if (count > 0) {
                totalSize += count;
                //	write zip
                zip.write(buffer, 0, count);
            }
        } while (count != -1);
        zip.closeEntry();
        //	Fini
        zip.finish();
        zip.close();
        in.close();
        time = System.currentTimeMillis() - time;
        speed = ((float) totalSize / 1024) / ((float) time / 1000);
        String msg = (totalSize / 1024) + "kB - " + time + " ms - " + speed + " kB/sec";
        log.fine(msg);
        //	Delivery Record
        ad.setDeliveryConfirmation(msg);
        ad.saveEx();
        asset.saveEx();
    } catch (IOException ex) {
        String msg = ex.getMessage();
        if (msg == null || msg.length() == 0)
            msg = ex.toString();
        log.warning(msg);
        //	Delivery Record
        try {
            if (msg.length() > 120)
                msg = msg.substring(0, 119);
            ad.setDeliveryConfirmation(msg);
            ad.save();
        //	asset.saveEx();	not delivered
        } catch (Exception ex1) {
            log.log(Level.SEVERE, "2 - " + ex);
        }
        //	nned to differentiate error message as response committed
        return "** Streaming error; Please Retry";
    }
    //
    return null;
}
Also used : ServletOutputStream(javax.servlet.ServletOutputStream) HttpSession(javax.servlet.http.HttpSession) InputStream(java.io.InputStream) MProductDownload(org.compiere.model.MProductDownload) ZipEntry(java.util.zip.ZipEntry) IOException(java.io.IOException) Properties(java.util.Properties) MAsset(org.compiere.model.MAsset) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) ZipOutputStream(java.util.zip.ZipOutputStream) MAssetDelivery(org.compiere.model.MAssetDelivery) WebUser(org.compiere.util.WebUser)

Example 5 with MAsset

use of org.compiere.model.MAsset in project adempiere by adempiere.

the class MAssetTest method testQuery.

public void testQuery() throws Exception {
    //test with mock A_Asset and A_Asset_Delivery record
    MAsset asset = new MAsset(getCtx(), 1000000, getTrxName());
    MAssetDelivery[] assets = asset.getDeliveries();
    assertTrue("assets must have values", assets.length > 0);
    MAsset getstmt = MAsset.getFromShipment(getCtx(), 1000000, getTrxName());
    assertTrue("stmt must be active", getstmt.isActive() == true);
}
Also used : MAssetDelivery(org.compiere.model.MAssetDelivery) MAsset(org.compiere.model.MAsset)

Aggregations

MAsset (org.compiere.model.MAsset)7 MAssetDelivery (org.compiere.model.MAssetDelivery)3 MMailText (org.compiere.model.MMailText)2 MProductDownload (org.compiere.model.MProductDownload)2 MUser (org.compiere.model.MUser)2 MUserMail (org.compiere.model.MUserMail)2 EMail (org.compiere.util.EMail)2 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 BigDecimal (java.math.BigDecimal)1 URI (java.net.URI)1 Timestamp (java.sql.Timestamp)1 Properties (java.util.Properties)1 ZipEntry (java.util.zip.ZipEntry)1 ZipOutputStream (java.util.zip.ZipOutputStream)1 ServletException (javax.servlet.ServletException)1 ServletOutputStream (javax.servlet.ServletOutputStream)1 HttpSession (javax.servlet.http.HttpSession)1 I_M_InOut (org.compiere.model.I_M_InOut)1 MAssetAddition (org.compiere.model.MAssetAddition)1