org.openlmis.core.network.model.StockMovementEntry.java Source code

Java tutorial

Introduction

Here is the source code for org.openlmis.core.network.model.StockMovementEntry.java

Source

/*
 * This program is part of the OpenLMIS logistics management information
 * system platform software.
 *
 * Copyright  2015 ThoughtWorks, Inc.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version. This program is distributed in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Affero General Public License for more details. You should
 * have received a copy of the GNU Affero General Public License along with
 * this program. If not, see http://www.gnu.org/licenses. For additional
 * information contact info@OpenLMIS.org
 */

package org.openlmis.core.network.model;

import org.joda.time.DateTime;
import org.joda.time.format.ISODateTimeFormat;
import org.openlmis.core.LMISApp;
import org.openlmis.core.R;
import org.openlmis.core.model.LotMovementItem;
import org.openlmis.core.model.StockMovementItem;
import org.openlmis.core.utils.DateUtil;
import org.roboguice.shaded.goole.common.base.Function;
import org.roboguice.shaded.goole.common.collect.FluentIterable;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
public class StockMovementEntry {
    String facilityId;
    String productCode;
    long quantity;
    String reasonName;
    String occurred;
    String referenceNumber;
    String type;
    String createdTime;
    Long requestedQuantity;

    HashMap<String, String> customProps = new HashMap<>();
    List<LotMovementEntry> lotEventList = new ArrayList<>();

    public StockMovementEntry(StockMovementItem stockMovementItem, String facilityId) {
        this.setProductCode(stockMovementItem.getStockCard().getProduct().getCode());
        this.setQuantity(stockMovementItem.getMovementQuantity());
        this.setReasonName(stockMovementItem.getReason());
        this.setFacilityId(facilityId);
        this.setType("ADJUSTMENT");
        this.setOccurred(DateUtil.formatDate(stockMovementItem.getMovementDate(), DateUtil.DB_DATE_FORMAT));
        this.setCreatedTime(
                new DateTime(stockMovementItem.getCreatedTime()).toString(ISODateTimeFormat.basicDateTime()));
        this.setReferenceNumber(stockMovementItem.getDocumentNumber());
        this.setRequestedQuantity(stockMovementItem.getRequested());
        this.getCustomProps().put("signature", stockMovementItem.getSignature());
        this.getCustomProps().put("SOH", String.valueOf(stockMovementItem.getStockOnHand()));

        if (LMISApp.getInstance().getFeatureToggleFor(R.bool.feature_lot_management)
                && stockMovementItem.getLotMovementItemListWrapper() != null) {
            lotEventList.addAll(FluentIterable.from(stockMovementItem.getLotMovementItemListWrapper())
                    .transform(new Function<LotMovementItem, LotMovementEntry>() {
                        @Override
                        public LotMovementEntry apply(LotMovementItem lotMovementItem) {
                            return new LotMovementEntry(lotMovementItem);
                        }
                    }).toList());

        } else {
            this.getCustomProps().put("expirationDates", stockMovementItem.getStockCard().getExpireDates());
        }
    }
}