private static void setLineItemDomainCostValues( LineItem dfpLineItem, LineItemDomain lineItemDomain, OrderDomain orderDomain) { removeLineItemFromOrder(lineItemDomain, orderDomain); lineItemDomain.setRate(dfpLineItem.getCostPerUnit().getMicroAmount() / 1000000D); lineItemDomain.setCostType(dfpLineItem.getCostType().toString()); if (Objects.equals(dfpLineItem.getCostType(), CostType.CPC)) { lineItemDomain.setGrossValue(dfpLineItem.getUnitsBought() * lineItemDomain.getRate()); } else if (Objects.equals(dfpLineItem.getCostType(), CostType.CPM)) { lineItemDomain.setGrossValue(dfpLineItem.getUnitsBought() * lineItemDomain.getRate() / 1000D); } else if (Objects.equals(dfpLineItem.getCostType(), CostType.CPD)) { final long startTime = toDate(dfpLineItem.getStartDateTime()).getTime(); final long endTime = toDate(dfpLineItem.getEndDateTime()).getTime(); final long days = ((endTime - startTime) / 86400000L) + 1; lineItemDomain.setGrossValue(days * lineItemDomain.getRate()); } lineItemDomain.setGoal((double) dfpLineItem.getUnitsBought()); lineItemDomain.setNetValue(dfpLineItem.getBudget().getMicroAmount() / 1000000D); lineItemDomain.setGeneralDiscount( lineItemDomain.getGrossValue() - lineItemDomain.getNetValue()); if (Objects.equals(dfpLineItem.getDiscountType(), LineItemDiscountType.PERCENTAGE)) { lineItemDomain.setDiscountPercent(dfpLineItem.getDiscount()); } else { lineItemDomain.setDiscountPercent(null); } addLineItemIntoOrder(lineItemDomain, orderDomain); }
public static void updateCostValues(LineItemDomain item, OrderDomain order, String costType) throws Exception { final LineItemServiceInterface itemService = dfpServiceFactory.newDfpService(LineItemServiceInterface.class); LineItem dfpItem = itemService.getLineItem(item.getId()); setLineItemsCostValues(dfpItem, dfpItem.getCostPerUnit().getCurrencyCode(), costType); dfpItem = itemService.updateLineItem(dfpItem); setLineItemDomainCostValues(dfpItem, item, order); }
public static void updateCostPerUnit(LineItemDomain item, OrderDomain order, Long rate) throws Exception { final LineItemServiceInterface itemService = dfpServiceFactory.newDfpService(LineItemServiceInterface.class); LineItem dfpItem = itemService.getLineItem(item.getId()); dfpItem.setCostPerUnit(new Money(dfpItem.getCostPerUnit().getCurrencyCode(), rate)); if (Objects.equals(dfpItem.getDiscountType(), LineItemDiscountType.ABSOLUTE_VALUE) && dfpItem.getDiscount() > rate) { dfpItem.setDiscount(Math.max(0, dfpItem.getDiscount() - rate - 1)); } try { dfpItem = itemService.updateLineItem(dfpItem); } catch (ApiException e) { if (e.getFaultString().contains("RangeError.TOO_HIGH @ discount")) { dfpItem.setDiscount(0D); dfpItem = itemService.updateLineItem(dfpItem); } } setLineItemDomainCostValues(dfpItem, item, order); }