Untitled

 avatar
unknown
plain_text
a year ago
3.8 kB
3
Indexable
async function GetTotalProductSalesToAgent(req: Request): Promise<ServiceResponse<GetTotalBalanceAPIResponse>> {


try {
       
const currentDate = new Date();
const date = currentDate.getDate(); 
const month = currentDate.getMonth() + 1; 
const year = currentDate.getFullYear(); 

const Getdates=()=>{

   let startdate;
   let enddate;



    if(date<=30 && date>=21){
  

        enddate =new Date(year, month-1, 20);
        startdate=new Date(year, month-2, 20);
      
        
    }
    if(date<=20 && date>=11){
        enddate =new Date(year, month-1, 10);
        startdate=new Date(year, month-2, 10);
    }
    if(date<=1 && date>=10){
        enddate =new Date(year, month-2, 30);
        startdate=new Date(year, month-3, 30);
    }

    return {startdate,enddate};

}


let dateDetails=Getdates();
console.log(dateDetails);


//console.log(moment(dateDetails.startdate).format('YYYY-MM-DD'), moment(dateDetails.enddate).format('YYYY-MM-DD'));

  

        let productSalesToAgent = await AppDataSource.getRepository(entities.ProductSalesToAgent)
            .createQueryBuilder("productSalesToAgent")
            .leftJoinAndSelect("productSalesToAgent.SoldToAgent", "productSoldToAgent")
            .where("DATE(productSalesToAgent.CreatedAt) >= :startDate", { startDate: moment(dateDetails.startdate).format('YYYY-MM-DD')})
            .andWhere("DATE(productSalesToAgent.CreatedAt) <= :endDate", { endDate:  moment(dateDetails.enddate).format('YYYY-MM-DD')})
            .andWhere("productSalesToAgent.SoldToAgent =:SoldToAgent", { SoldToAgent: req.params.id })
            .getMany();
      

        const milkCollectionDetails = await AppDataSource.getRepository(entities.MilkCollectionDetails).createQueryBuilder("milkCollectionDetails")
            .leftJoinAndSelect("milkCollectionDetails.OrganizationUnitId", "organization")
            .where("DATE(milkCollectionDetails.CollectedAt) >= :startDate", { startDate: moment(dateDetails.startdate).format('YYYY-MM-DD')})
            .andWhere("DATE(milkCollectionDetails.CollectedAt) <= :endDate", { endDate:  moment(dateDetails.enddate).format('YYYY-MM-DD')})
            .andWhere("milkCollectionDetails.OrganizationUnitId =:OrganizationUnitId", { OrganizationUnitId: req.params.id })
            .getMany();


        const rateMaster = await AppDataSource.getRepository(entities.RateMaster)
            .createQueryBuilder("ratemaster")
            .where("ratemaster.Wef < :currDate", { currDate: new Date() })
            .andWhere("ratemaster.IsActive =:isActive", { isActive: true })
            .orderBy("ratemaster.SeqNo", "ASC")
            .getMany();

        
            let totalProductValue=0;
            let totalMilkValue=0;

         
            productSalesToAgent.forEach(element => {
                // console.log('Balance:',element.Balance);
                totalProductValue+=element.Balance;
            });
    

            milkCollectionDetails.forEach(element => {
            let value = calculateValue(element.Fat,element.Snf,rateMaster);
            // console.log('vales:',value,element.Weight+value);
            totalMilkValue += element.Weight * value
            });

            let result={balance:totalProductValue - totalMilkValue}
       
            // console.log("For ID :",req.params.id,"MilkValue:",TotalMilkValue,'Productvalue:',TotalProductValue);
       
        return {
            status: 200,
            message: 'succes',
            data: result,
        };
       
    } catch (e) {
        console.error(e); // Log the actual error
        console.log(e);
        return {
            status: 400,
            message: ERROR_MESSAGES.INTERNAL_SERVER,
            data: null,
        };
       
    }
}
Editor is loading...
Leave a Comment