Subversion Repositories SmartDukaan

Rev

Rev 37479 | Rev 37499 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
23755 amit.gupta 1
package com.smartdukaan.cron;
23723 amit.gupta 2
 
32782 raveendra. 3
import com.smartdukaan.cron.migrations.RunOnceTasks;
4
import com.smartdukaan.cron.scheduled.*;
5
import com.smartdukaan.cron.scheduled.b2b.Listing;
36745 ranu 6
import com.smartdukaan.cron.scheduled.beatmiss.BeatMissDetectorRunner;
32782 raveendra. 7
import com.smartdukaan.cron.scheduled.leadsync.LeadSyncRunner;
32831 amit.gupta 8
import com.smartdukaan.cron.scheduled.ordertracking.OrderTrackingService;
33274 amit.gupta 9
import com.smartdukaan.cron.scheduled.purchaseorder.POScheduler;
34860 ranu 10
import com.smartdukaan.cron.scheduled.razorpay.FetchPartnersDisbursementTask;
36058 ranu 11
import com.smartdukaan.cron.scheduled.knowlarity.KnowlarityCallMonitorScheduler;
12
import com.spice.profitmandi.common.model.InvoicePdfModel;
34443 vikas.jang 13
import com.spice.profitmandi.common.model.ProfitMandiConstants;
32782 raveendra. 14
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
15
import com.spice.profitmandi.dao.repository.cs.CsService;
16
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
36035 amit 17
import com.spice.profitmandi.dao.service.shopify.ShopifyProductSyncService;
32782 raveendra. 18
import com.spice.profitmandi.dao.util.ContentPojoPopulator;
19
import com.spice.profitmandi.service.integrations.samsung.upgradeoffer.UpgradeOfferService;
36063 ranu 20
import com.spice.profitmandi.service.mail.MailOutboxService;
23723 amit.gupta 21
import org.apache.logging.log4j.LogManager;
22
import org.apache.logging.log4j.Logger;
28389 amit.gupta 23
import org.apache.velocity.app.VelocityEngine;
24
import org.apache.velocity.exception.VelocityException;
23898 amit.gupta 25
import org.springframework.beans.factory.annotation.Autowired;
26
import org.springframework.boot.ApplicationArguments;
27
import org.springframework.boot.ApplicationRunner;
23723 amit.gupta 28
import org.springframework.boot.WebApplicationType;
29
import org.springframework.boot.autoconfigure.SpringBootApplication;
30
import org.springframework.boot.builder.SpringApplicationBuilder;
31
import org.springframework.context.annotation.Bean;
32
import org.springframework.context.annotation.ComponentScan;
34554 tejus.loha 33
import org.springframework.context.annotation.EnableAspectJAutoProxy;
23935 amit.gupta 34
import org.springframework.context.annotation.Primary;
23723 amit.gupta 35
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
36
import org.springframework.core.io.ClassPathResource;
35393 amit 37
import org.springframework.core.io.Resource;
23906 amit.gupta 38
import org.springframework.mail.javamail.JavaMailSender;
37453 amit 39
import com.spice.profitmandi.common.services.AuthenticatedIdentityMailSender;
23906 amit.gupta 40
import org.springframework.mail.javamail.JavaMailSenderImpl;
28389 amit.gupta 41
import org.springframework.ui.velocity.VelocityEngineFactoryBean;
23723 amit.gupta 42
 
32782 raveendra. 43
import java.io.FileInputStream;
44
import java.io.IOException;
45
import java.time.LocalDate;
37058 amit 46
import java.time.LocalDateTime;
32782 raveendra. 47
import java.time.YearMonth;
48
import java.util.ArrayList;
49
import java.util.Arrays;
50
import java.util.List;
51
import java.util.Properties;
52
import java.util.stream.Collectors;
23724 amit.gupta 53
 
23723 amit.gupta 54
@SpringBootApplication
34554 tejus.loha 55
@EnableAspectJAutoProxy
23755 amit.gupta 56
@ComponentScan("com.smartdukaan.cron.*, com.spice.profitmandi.common.*")
24122 govind 57
public class Application implements ApplicationRunner {
58
 
31753 tejbeer 59
    private static final Logger LOGGER = LogManager.getLogger(Application.class);
24122 govind 60
 
31753 tejbeer 61
    @Autowired
62
    LeadSyncRunner leadSyncRunner;
30120 amit.gupta 63
 
31753 tejbeer 64
    @Autowired
65
    StandAlone standAlone;
30209 amit.gupta 66
 
31753 tejbeer 67
    @Autowired
68
    UpgradeOfferService upgradeOfferService;
27392 amit.gupta 69
 
31753 tejbeer 70
    @Autowired
71
    private TicketRelatedScheduledTask ticketRelatedScheduledTask;
28368 tejbeer 72
 
31753 tejbeer 73
    @Autowired
74
    private OnBoardingRelatedSchelduleTask onBoardingRelatedSchelduleTask;
28921 tejbeer 75
 
31753 tejbeer 76
    @Autowired
77
    private InvestmentRelatedTasks investmentRelatedTasks;
27392 amit.gupta 78
 
31753 tejbeer 79
    @Autowired
80
    private CsService csService;
29814 tejbeer 81
 
31753 tejbeer 82
    @Autowired
83
    private FofoOrderItemRepository fofoOrderItemRepository;
24603 amit.gupta 84
 
31753 tejbeer 85
    @Autowired
86
    private ContentPojoPopulator contentPojoPopulator;
29361 tejbeer 87
 
31753 tejbeer 88
    @Autowired
89
    private Listing listing;
24122 govind 90
 
32831 amit.gupta 91
    @Autowired
92
    OrderTrackingService orderTrackingService;
93
 
36306 amit 94
    @Autowired
95
    BatchScheduledTasks batchScheduledTasks;
96
 
36745 ranu 97
    @Autowired
98
    private BeatMissDetectorRunner beatMissDetectorRunner;
99
 
31753 tejbeer 100
    public static void main(String[] args) throws Throwable {
101
        try {
35803 amit 102
            WebApplicationType webType = WebApplicationType.SERVLET;
103
            for (String arg : args) {
104
                if (arg.contains("spring.main.web-application-type=none")) {
105
                    webType = WebApplicationType.NONE;
106
                    break;
107
                }
108
            }
109
            new SpringApplicationBuilder(Application.class)
110
                    .web(webType)
111
                    .run(args);
31753 tejbeer 112
        } catch (Throwable t) {
113
            t.printStackTrace();
114
        }
115
    }
28389 amit.gupta 116
 
31753 tejbeer 117
    @Bean
118
    public static PropertySourcesPlaceholderConfigurer propertyConfigurer1() {
119
        LOGGER.info("Called Configuration");
120
        PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
35393 amit 121
 
35832 amit 122
        String activeProfile;
123
        Properties properties = new Properties();
124
        try {
125
            properties.load(Application.class.getClassLoader().getResourceAsStream("META-INF/env.property"));
126
        } catch (IOException e) {
127
            LOGGER.error("Error reading env.property, defaulting to dev: " + e);
128
            properties.put("profile", "dev");
129
        }
130
        activeProfile = (String) properties.get("profile");
35393 amit 131
 
35832 amit 132
        Resource appResource;
133
        Resource sharedResource;
134
 
135
        if ("prod".equals(activeProfile)) {
136
            appResource = new ClassPathResource("/META-INF/prod.properties");
137
            sharedResource = new ClassPathResource("/shared-prod.properties");
138
        } else if ("staging".equals(activeProfile)) {
139
            appResource = new ClassPathResource("/META-INF/staging.properties");
140
            sharedResource = new ClassPathResource("/shared-staging.properties");
141
        } else {
142
            appResource = new ClassPathResource("/META-INF/dev.properties");
143
            sharedResource = new ClassPathResource("/shared-dev.properties");
144
        }
145
 
146
        LOGGER.info("Cron loading profile: " + activeProfile);
147
        propertySourcesPlaceholderConfigurer.setLocations(sharedResource, appResource);
35393 amit 148
        propertySourcesPlaceholderConfigurer.setIgnoreResourceNotFound(true);
149
 
31753 tejbeer 150
        return propertySourcesPlaceholderConfigurer;
151
    }
28389 amit.gupta 152
 
31753 tejbeer 153
    @Bean(name = "veloctyEngine")
154
    public VelocityEngine velocityEngine() throws VelocityException, IOException {
155
        VelocityEngineFactoryBean factory = new VelocityEngineFactoryBean();
28389 amit.gupta 156
 
31753 tejbeer 157
        Properties velocityProperties = new Properties();
158
        velocityProperties.put("resource.loader", "class");
159
        velocityProperties.put("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
160
        velocityProperties.put("file.resource.loader.cache", true);
161
        velocityProperties.put("file.resource.loader.unicode", true);
162
        velocityProperties.put("input.encoding", "UTF-8");
163
        velocityProperties.put("output.encoding", "UTF-8");
164
        velocityProperties.put("response.encoding", "UTF-8");
165
        velocityProperties.put("overrideLogging", true);
28389 amit.gupta 166
 
31753 tejbeer 167
        // velocityProperties.put("file.resource.loader.path", ".");
28389 amit.gupta 168
 
31753 tejbeer 169
        factory.setVelocityProperties(velocityProperties);
28389 amit.gupta 170
 
31753 tejbeer 171
        return factory.createVelocityEngine();
23723 amit.gupta 172
 
31753 tejbeer 173
    }
24122 govind 174
 
37474 amit 175
    /**
176
     * The default sender. Authenticates as sdtech@smartdukaan.com and rewrites
177
     * every From to that identity — Workspace binds an authenticated session to
178
     * one address and rejects any other with
179
     * "535 Authorization failed: Authenticated user is not authorized to send mail".
180
     *
181
     * Also answers to "mailSender" so the many unqualified JavaMailSender
182
     * injections resolve here rather than needing to be touched.
183
     */
37479 amit 184
    @Bean(name = "googleMailSender")
31753 tejbeer 185
    public JavaMailSender googleMailSender() {
37453 amit 186
        JavaMailSenderImpl mailSender = new AuthenticatedIdentityMailSender();
34612 ranu 187
        mailSender.setHost("smtp.gmail.com");
188
        mailSender.setPort(465);
189
        mailSender.setUsername("sdtech@smartdukaan.com");
37369 amit 190
        mailSender.setPassword("wbdwyqrcgosrkwdn"); // App Password
34612 ranu 191
 
192
        Properties props = mailSender.getJavaMailProperties();
193
        props.put("mail.smtp.auth", "true");
194
        props.put("mail.smtp.ssl.enable", "true");
195
        props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
196
        props.put("mail.smtp.socketFactory.port", "465");
197
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
37368 amit 198
        props.put("mail.smtp.connectiontimeout", "30000");
199
        props.put("mail.smtp.timeout", "120000");
200
        props.put("mail.smtp.writetimeout", "120000");
34612 ranu 201
 
202
        return mailSender;
203
    }
204
 
37479 amit 205
    /**
206
     * The default sender.
207
     *
208
     * Verified working 2026-08-31: MAIL FROM:<noreply@smartdukaan.com> returns 250
209
     * over IPv4. It does not authenticate -- Workspace authorises it by allowlisted
210
     * source IP -- so it may legitimately send as noreply@.
211
     *
37480 amit 212
     * googleMailSender is the alternative and its credentials are valid -- verified
213
     * 2026-08-31, AUTH OK on both 465 and 587. Use it by qualifier where a message
214
     * must come from the authenticated identity rather than noreply@.
37479 amit 215
     *
37480 amit 216
     * SMTP on this host works over IPv4 only, and that is not specific to the relay:
217
     * over IPv6 the relay answers "550 5.7.1 Invalid credentials for relay" and
218
     * smtp.gmail.com rejects a valid app password with "535 5.7.8 Username and
219
     * Password not accepted". The JVM prefers IPv4, which is the only reason mail
220
     * leaves this box at all. Anything that prefers IPv6 will fail on both paths.
37479 amit 221
     */
222
    @Bean(name = {"gmailRelaySender", "mailSender"})
223
    @Primary
36248 amit 224
    public JavaMailSender getGmailRelaySender() {
225
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
226
        mailSender.setHost("smtp-relay.gmail.com");
227
        mailSender.setPort(587);
228
 
229
        Properties props = mailSender.getJavaMailProperties();
230
        props.put("mail.smtp.starttls.enable", "true");
231
        props.put("mail.smtp.auth", "false");
232
        props.put("mail.smtp.localhost", "smartdukaan.com");
233
        props.put("mail.smtp.ssl.protocols", "TLSv1.2");
234
        props.put("mail.smtp.ssl.trust", "smtp-relay.gmail.com");
235
        props.put("mail.transport.protocol", "smtp");
37368 amit 236
        props.put("mail.smtp.connectiontimeout", "30000");
237
        props.put("mail.smtp.timeout", "120000");
238
        props.put("mail.smtp.writetimeout", "120000");
36248 amit 239
 
240
        return mailSender;
241
    }
242
 
31753 tejbeer 243
    @Autowired
244
    private RunOnceTasks runOnceTasks;
24122 govind 245
 
31753 tejbeer 246
    @Autowired
247
    private ScheduledTasks scheduledTasks;
30335 amit.gupta 248
 
31753 tejbeer 249
    @Autowired
34306 ranu 250
    private ScheduledTasksTest scheduledTasksTest;
251
 
252
    @Autowired
34860 ranu 253
    private FetchPartnersDisbursementTask fetchPartnersDisbursementTask;
254
 
255
    @Autowired
31753 tejbeer 256
    private Reconciliation reconciliation;
30309 amit.gupta 257
 
31753 tejbeer 258
    @Autowired
36511 amit 259
    private WarehouseStockReconciliation warehouseStockReconciliation;
260
 
261
    @Autowired
37159 amit 262
    private PartnerIdentityIntegrityMonitor partnerIdentityIntegrityMonitor;
263
 
264
    @Autowired
35250 amit 265
    private Migrations migrations;
266
 
267
    @Autowired
31753 tejbeer 268
    CaptchaService captchaService;
28921 tejbeer 269
 
33274 amit.gupta 270
    @Autowired
271
    POScheduler poScheduler;
32878 amit.gupta 272
 
35929 vikas 273
    @Autowired
274
    ShopifyProductSyncService shopifyProductSyncService;
33274 amit.gupta 275
 
36058 ranu 276
    @Autowired
277
    KnowlarityCallMonitorScheduler knowlarityCallMonitorScheduler;
35929 vikas 278
 
36063 ranu 279
    @Autowired
280
    MailOutboxService mailOutboxService;
281
 
31753 tejbeer 282
    @Override
283
    public void run(ApplicationArguments args) throws Exception {
32008 amit.gupta 284
        //scheduledTasks.test();
285
        //System.exit();
31753 tejbeer 286
        LOGGER.info("Called run method");
36058 ranu 287
 
288
        // Knowlarity Call Monitor - Manual trigger (if 10 AM scheduled start was missed)
289
        // This just starts the monitor; scheduled healthCheck and stopMonitoring will still work
290
        if (args.containsOption("startKnowlarityMonitor")) {
291
            LOGGER.info("Starting Knowlarity Call Monitor manually...");
292
            knowlarityCallMonitorScheduler.startMonitoring();
293
            LOGGER.info("Knowlarity Call Monitor started. Scheduled tasks will handle health checks and 10 PM stop.");
294
            // No sleep needed - Spring scheduler keeps app running and handles 10 PM stop
295
        }
36545 ranu 296
        if (args.containsOption("trackingReport")) {
297
            runOnceTasks.dailyTrackingReport();
298
        }
36058 ranu 299
        if (args.containsOption("stopKnowlarityMonitor")) {
300
            LOGGER.info("Stopping Knowlarity Call Monitor...");
301
            knowlarityCallMonitorScheduler.stopMonitoring();
302
        }
36115 ranu 303
        // Knowlarity - Request fresh snapshot manually (when status not updating)
304
        if (args.containsOption("refreshKnowlaritySnapshot")) {
305
            LOGGER.info("Requesting Knowlarity snapshot manually...");
306
            knowlarityCallMonitorScheduler.healthCheck();
307
            LOGGER.info("Knowlarity snapshot requested.");
308
            System.exit(0);
309
        }
36058 ranu 310
 
33260 amit.gupta 311
        if (args.containsOption("removePartialBillingForTransaction")) {
312
            if (args.containsOption("trId")) {
33051 amit.gupta 313
                int transactionId = Integer.parseInt(args.getOptionValues("trId").get(0));
33054 amit.gupta 314
                scheduledTasks.removePartialBillingForTransaction(transactionId);
33051 amit.gupta 315
            }
316
            System.exit(0);
317
        }
34523 ranu 318
        if (args.containsOption("createOpeningStockPartyWise")) {
319
            scheduledTasks.createOpeningStockPartyWise();
320
            System.exit(0);
321
        }
31753 tejbeer 322
        if (args.containsOption("tc")) {
323
            System.out.println("Toffee service called");
324
            scheduledTasks.toffeeRollback();
325
            System.exit(0);
326
        }
327
        if (args.containsOption("bag")) {
328
            System.out.println("Bag service called");
329
            runOnceTasks.testBag();
330
            System.exit(0);
331
        }
29814 tejbeer 332
 
31753 tejbeer 333
        if (args.containsOption("rw")) {
334
            System.out.println("Reverse wallet");
335
            scheduledTasks.reverseWallet();
336
            System.exit(0);
337
        }
338
        if (args.containsOption("sendIndentTertiary")) {
339
            System.out.println("sendIndentTertiary");
340
            scheduledTasks.sendIndentTertiary();
341
            System.exit(0);
342
        }
343
        if (args.containsOption("checkPartnerActiveStore")) {
344
            System.out.println("checkPartnerActiveStore");
345
            scheduledTasks.checkPartnerActiveStore();
346
            System.exit(0);
347
        }
37172 amit 348
        if (args.containsOption("updatePjpAgendaInstances")) {
349
            System.out.println("updatePjpAgendaInstances");
350
            scheduledTasks.updatePjpAgendaInstances();
351
            System.exit(0);
352
        }
37040 ranu 353
        if (args.containsOption("updatePartnerActivationTypeByMonthlySale")) {
354
            System.out.println("updatePartnerActivationTypeByMonthlySale");
355
            scheduledTasks.updatePartnerActivationTypeByMonthlySale();
356
            System.exit(0);
357
        }
29800 manish 358
 
31753 tejbeer 359
        if (args.containsOption("selectFinServiceFollowUpDateByCurrDate")) {
360
            System.out.println("selectfinServiceFollowUpDateByCurrDate");
28368 tejbeer 361
 
31753 tejbeer 362
            scheduledTasks.selectFinServiceFollowUpDateByCurrDate(LocalDate.now());
363
            System.exit(0);
364
        }
25073 amit.gupta 365
 
31753 tejbeer 366
        if (args.containsOption("addHdfcPayment")) {
367
            runOnceTasks.addPayment();
368
            System.exit(0);
369
        }
35250 amit 370
        if (args.containsOption("migrateOriginalInventoryItemId")) {
371
            int batchSize = 10_000;
372
            if (args.containsOption("batchSize")) {
373
                try {
374
                    batchSize = Integer.parseInt(args.getOptionValues("batchSize").get(0));
375
                } catch (Exception e) {
376
                    LOGGER.warn("Invalid batchSize provided, defaulting to {}", batchSize);
377
                }
378
            }
379
            LOGGER.info("Starting migration for warehouse.inventoryItem.originalInventoryItemId with batchSize={}", batchSize);
36003 aman 380
            //migrations.migrateWarehouseOriginalInventoryItemId(batchSize);
35250 amit 381
            LOGGER.info("Migration completed.");
382
            System.exit(0);
383
        }
31753 tejbeer 384
        if (args.containsOption("processSchemeOut")) {
385
            System.out.println("Process schemeOut");
386
            int orderId = Integer.parseInt(args.getOptionValues("orderid").get(0));
387
            int fofoId = Integer.parseInt(args.getOptionValues("fofoid").get(0));
388
            runOnceTasks.processSchemeOut(fofoId, orderId);
389
            System.exit(0);
390
        }
391
        if (args.containsOption("at")) {
392
            System.out.println("Toffee service called");
393
            ticketRelatedScheduledTask.alertforTicket();
394
            System.exit(0);
395
        }
396
        if (args.containsOption("et")) {
397
            ticketRelatedScheduledTask.escalateTicket();
398
            ;
399
            System.exit(0);
400
        }
401
        if (args.containsOption("sr")) {
402
            List<String> schemeIds = args.getOptionValues("schemeId");
403
            System.out.println(schemeIds);
404
            scheduledTasks.schemeRollback(schemeIds);
405
            System.exit(0);
406
        }
407
        if (args.containsOption("processActivation")) {
408
            scheduledTasks.processActivation();
409
            System.exit(0);
410
        }
411
        if (args.containsOption("sendAttendanceMorningAlert")) {
412
            scheduledTasks.sendAttendanceMorningAlert();
413
            System.exit(0);
414
        }
415
        if (args.containsOption("sendAttendanceEveningAlert")) {
416
            scheduledTasks.sendAttendanceEveningAlert();
417
            System.exit(0);
418
        }
25721 tejbeer 419
 
31753 tejbeer 420
        if (args.containsOption("checkRazorPayPaymentStatus")) {
421
            scheduledTasks.checkRazorPayPaymentStatus();
422
            System.exit(0);
423
        }
424
        if (args.containsOption("grouping")) {
425
            scheduledTasks.grouping();
426
            System.exit(0);
427
        }
428
        if (args.containsOption("fixWallet")) {
429
            runOnceTasks.fixWallet();
430
            System.exit(0);
431
        }
36511 amit 432
        if (args.containsOption("reconcileInventorySnapshot")) {
433
            warehouseStockReconciliation.reconcile();
434
            System.exit(0);
435
        }
37159 amit 436
        if (args.containsOption("partnerIdentityIntegrityMonitor")) {
437
            partnerIdentityIntegrityMonitor.monitor();
438
            System.exit(0);
439
        }
31753 tejbeer 440
        if (args.containsOption("reconcileExpiredFixedSchemes")) {
441
            reconciliation.reconcileExpiredFixedSchemes();
442
            System.exit(0);
443
        }
444
        if (args.containsOption("dailyReconciliation")) {
445
            if (args.containsOption("date")) {
446
                LocalDate date = LocalDate.parse(args.getOptionValues("date").get(0));
447
                reconciliation.dailyReconciliation(date);
448
            } else {
449
                reconciliation.dailyReconciliation(LocalDate.now().minusDays(1));
450
            }
451
            System.exit(0);
452
        }
453
        /*
454
         * if (args.containsOption("test")) { schemeService.processSchemeIn(9243,
455
         * 175138102); throw new Exception(); }
456
         */
28921 tejbeer 457
 
31753 tejbeer 458
        if (args.containsOption("sendNotification")) {
459
            scheduledTasks.sendNotification();
460
            System.exit(0);
461
        }
26291 tejbeer 462
 
36063 ranu 463
        if (args.containsOption("processPendingMails")) {
464
            System.out.println("Processing pending mails...");
465
            mailOutboxService.processPendingMails();
466
            System.exit(0);
467
        }
468
 
31753 tejbeer 469
        if (args.containsOption("ticketClosed")) {
35568 amit 470
            // Redirected to TicketRelatedScheduledTask which handles auto-close as part of escalateTicket
471
            ticketRelatedScheduledTask.escalateTicket();
31753 tejbeer 472
            System.exit(0);
473
        }
28207 tejbeer 474
 
31753 tejbeer 475
        if (args.containsOption("getVendorWarehouses")) {
476
            int warehouseId = Integer.parseInt(args.getOptionValues("warehouseId").get(0));
477
            scheduledTasks.getVendorWarehouses(warehouseId);
478
            System.exit(0);
479
        }
29776 tejbeer 480
 
31753 tejbeer 481
        if (args.containsOption("checkfocusedModelInPartnerStock")) {
34344 amit.gupta 482
            try {
483
                scheduledTasks.checkfocusedModelInPartnerStock();
484
            } finally {
485
                System.exit(0);
486
            }
31753 tejbeer 487
        }
29451 manish 488
 
31753 tejbeer 489
        if (args.containsOption("checkImeiActivation")) {
490
            scheduledTasks.checkImeiActivation();
491
            System.exit(0);
492
        }
29776 tejbeer 493
 
31753 tejbeer 494
        if (args.containsOption("partnerProblemAlert")) {
495
            scheduledTasks.partnerProblemAlert();
496
            System.exit(0);
497
        }
498
        if (args.containsOption("notify")) {
499
            if (args.containsOption("fofoId")) {
500
                int fofoId = Integer.parseInt(args.getOptionValues("fofoId").get(0));
501
                scheduledTasks.sendDailySalesNotificationToPartner(fofoId);
502
            }
503
            System.exit(0);
504
        }
505
        if (args.containsOption("findMismatchesInIndent")) {
506
            runOnceTasks.findMismatchesInIndent();
507
            System.exit(0);
508
        }
29035 tejbeer 509
 
31753 tejbeer 510
        if (args.containsOption("onboardingEventDelays")) {
511
            onBoardingRelatedSchelduleTask.onboardingEventDelays();
512
            System.exit(0);
513
        }
28982 tejbeer 514
 
31753 tejbeer 515
        if (args.containsOption("onBoardingCompleteEventEmail")) {
516
            onBoardingRelatedSchelduleTask.onBoardingCompleteEventEmail();
517
            System.exit(0);
518
        }
28921 tejbeer 519
 
31753 tejbeer 520
        if (args.containsOption("onBoardingDocumentsPending")) {
521
            onBoardingRelatedSchelduleTask.onBoardingDocumentsPending();
522
            System.exit(0);
523
        }
524
        if (args.containsOption("onBoardingMigration")) {
525
            onBoardingRelatedSchelduleTask.onBoardingMigration();
526
            System.exit(0);
527
        }
28921 tejbeer 528
 
33859 tejus.loha 529
//        if (args.containsOption("advancePaymentPendingAlert")) {
530
//            onBoardingRelatedSchelduleTask.advancePaymentPendingAlert();
531
//            System.exit(0);
532
//        }
28963 tejbeer 533
 
31753 tejbeer 534
        if (args.containsOption("fullPaymentPendingAlert")) {
535
            onBoardingRelatedSchelduleTask.fullPaymentPendingAlert();
536
            System.exit(0);
537
        }
29308 tejbeer 538
 
33859 tejus.loha 539
//        if (args.containsOption("advancePaymentPendinglegalAlert")) {
540
//            onBoardingRelatedSchelduleTask.advancePaymentPendinglegalAlert();
541
//            System.exit(0);
542
//        }
31117 tejbeer 543
 
31753 tejbeer 544
        if (args.containsOption("markDelhiveryOrderDelivered")) {
32831 amit.gupta 545
            orderTrackingService.markDelhiveryOrderDelivered();
31753 tejbeer 546
            System.exit(0);
547
        }
32831 amit.gupta 548
 
31753 tejbeer 549
        if (args.containsOption("markBlueDartOrderDelivered")) {
32794 raveendra. 550
            System.out.println("Marking BlueDart Order Delivered...");
32831 amit.gupta 551
            orderTrackingService.markBlueDartOrderDelivered();
31753 tejbeer 552
            System.exit(0);
553
        }
554
        if (args.containsOption("mergingdata")) {
555
            onBoardingRelatedSchelduleTask.mergingdata();
556
            System.exit(0);
557
        }
558
        if (args.containsOption("brandingAlert")) {
559
            onBoardingRelatedSchelduleTask.brandingAlert();
560
            System.exit(0);
561
        }
31089 amit.gupta 562
 
33859 tejus.loha 563
//        if (args.containsOption("storeTimelinePromoterPending")) {
564
//            onBoardingRelatedSchelduleTask.storeTimelinePromoterPending();
565
//            System.exit(0);
566
//        }
31249 tejbeer 567
 
31753 tejbeer 568
        if (args.containsOption("ppl")) {
569
            runOnceTasks.printPendingLeads();
570
            System.exit(0);
571
        }
31249 tejbeer 572
 
31753 tejbeer 573
        if (args.containsOption("notifyAll")) {
574
            scheduledTasks.sendDailySalesNotificationToPartner(null);
575
            System.exit(0);
576
        }
31249 tejbeer 577
 
31753 tejbeer 578
        if (args.containsOption("monthlyTargetForInternalTeam")) {
579
            scheduledTasks.monthlyTargetForInternalTeam();
580
            System.exit(0);
581
        }
31249 tejbeer 582
 
31753 tejbeer 583
        if (args.containsOption("monthlyTargetForPartner")) {
584
            scheduledTasks.monthlyTargetForPartner();
585
            System.exit(0);
586
        }
33444 ranu 587
        if (args.containsOption("findAllLiveDemoBrandItemsByBillingDate")) {
588
            scheduledTasks.findAllLiveDemoBrandItemsByBillingDate();
589
            System.exit(0);
590
        }
33464 ranu 591
        if (args.containsOption("findTodayPocoBillingItems")) {
592
            scheduledTasks.findTodayPocoBillingItems();
593
            System.exit(0);
594
        }
28921 tejbeer 595
 
31753 tejbeer 596
        if (args.containsOption("hygineAlertForPartner")) {
597
            scheduledTasks.hygineAlertForPartner();
598
            System.exit(0);
599
        }
28921 tejbeer 600
 
31753 tejbeer 601
        if (args.containsOption("hygineAlertForInternalTeam")) {
602
            scheduledTasks.hygineAlertForInternalTeam();
603
            System.exit(0);
604
        }
605
 
32214 jai.hind 606
        if (args.containsOption("checkItelImeiActivationNew")) {
607
            scheduledTasks.checkItelImeiActivationNew(LocalDate.now(), 15);
608
            System.exit(0);
609
        }
37479 amit 610
        // One tick's worth (50 imeis), not a full pass -- the backlog is cleared by the
611
        // scheduled 5-minute ticks. Useful for checking the endpoint by hand.
612
        if (args.containsOption("checkCarlcareImeiActivation")) {
613
            scheduledTasks.checkCarlcareImeiActivation();
614
            System.exit(0);
615
        }
31753 tejbeer 616
        if (args.containsOption("once")) {
33274 amit.gupta 617
 
618
            if (args.containsOption("autoClosePurchaseOrders")) {
619
                poScheduler.autoClosePurchaseOrders();
620
            }
31753 tejbeer 621
            if (args.containsOption("cancelOnceAssist")) {
622
                if (args.containsOption("invoiceNumber")) {
623
                    String oneAssistInvoiceNumber = args.getOptionValues("invoiceNumber").get(0);
624
                    runOnceTasks.cancelOnceAssist(oneAssistInvoiceNumber);
625
                }
626
 
35266 ranu 627
 
31753 tejbeer 628
            }
34208 ranu 629
            if (args.containsOption("cancelOnceAssist")) {
630
                if (args.containsOption("MemberShipNumber")) {
631
                    String applicationNo = args.getOptionValues("applicationNo").get(0);
632
                    String membershipId = args.getOptionValues("membershipId").get(0);
633
                    runOnceTasks.cancelOnceAssistByMemberShipNumber(applicationNo, membershipId);
634
                }
635
 
636
            }
33260 amit.gupta 637
            if (args.containsOption("changeFulfillmentWarehouse")) {
638
                if (args.containsOption("orderId") && args.containsOption("whId")) {
35277 amit 639
                    List<Integer> orderIds = Arrays.stream(args.getOptionValues("orderId").get(0).split(","))
640
                            .map(String::trim)
641
                            .map(Integer::parseInt)
642
                            .collect(Collectors.toList());
643
 
35276 amit 644
                    int warehouseId = Integer.parseInt(args.getOptionValues("whId").get(0));
645
                    for (Integer orderId : orderIds) {
646
                        runOnceTasks.changeFulfillmentWarehouse(orderId, warehouseId);
647
                    }
33260 amit.gupta 648
                }
649
                System.exit(0);
650
            }
31753 tejbeer 651
            if (args.containsOption("1")) {
652
                if (args.containsOption("test")) {
31618 amit.gupta 653
                    //scheduledTasks.sendPartnerInvestmentDetails(args.getOptionValues("email"));
31753 tejbeer 654
                    System.out.println("Calling test method");
36003 aman 655
                    try {
656
                        scheduledTasks.test();
657
                    } catch (Throwable e) {
658
                        throw new RuntimeException(e);
659
                    }
35165 amit 660
                    System.exit(0);
32083 tejbeer 661
 
662
                    if (args.containsOption("migrateVendorItemPricing")) {
663
                        scheduledTasks.migrateVendorItemPricing();
664
                        System.exit(0);
665
                    }
666
 
667
                    if (args.containsOption("approveVendorCatalogPricing")) {
668
                        scheduledTasks.approveVendorCatalogPricing();
669
                        System.exit(0);
670
                    }
32080 tejbeer 671
                } else if (args.containsOption("test1")) {
32008 amit.gupta 672
                    scheduledTasks.test1();
34845 ranu 673
                } else if (args.containsOption("scheduleTaskTest1")) {
674
 
675
                    scheduledTasksTest.test();
676
                }else if (args.containsOption("generateBiReport")) {
677
                    scheduledTasksTest.generateBiReport();
34945 ranu 678
                }else if (args.containsOption("abmSendertest")) {
34946 ranu 679
                    runOnceTasks.setAbmReportSender();
35788 vikas 680
                }else if (args.containsOption("syncProductsToShopify")) {
36058 ranu 681
                    shopifyProductSyncService.syncByWarehouse(ProfitMandiConstants.WAREHOUSE_NAME_MAP.get("UP-WEST/NOIDA"));
34321 ranu 682
                }
34860 ranu 683
                else if (args.containsOption("fetchPartnerDisburseMentTask")) {
684
                    if(args.containsOption("fetchDisbursements")){
685
                        fetchPartnersDisbursementTask.fetchDisbursementsTest();
686
                    }
687
                    else if(args.containsOption("creditAmountTest")){
688
                        fetchPartnersDisbursementTask.creditAmountTest();
689
                    }
690
                    else if(args.containsOption("createContactsAndFundsForFranchiseeTest")){
691
                        fetchPartnersDisbursementTask.createContactsAndFundsForFranchiseeTest();
692
                    }
693
                    else if(args.containsOption("rabbitTransactionProducertest")){
694
                        fetchPartnersDisbursementTask.rabbitTransactionProducertest();
695
                    }
34879 ranu 696
                    else if(args.containsOption("sendingDisbursementMail")){
697
                        fetchPartnersDisbursementTask.sendingDisbursementMail();
698
                    }
34860 ranu 699
                    else {
700
                        fetchPartnersDisbursementTask.test();
701
                    }
702
                }
34845 ranu 703
                else if (args.containsOption("testNew1")) {
34307 ranu 704
                    List<String> loanIdArgs = args.getOptionValues("loanIds");  // ["34833,36536,37151"]
705
                    List<Integer> loanIds = new ArrayList<>();
706
 
707
                    if (loanIdArgs != null && !loanIdArgs.isEmpty()) {
708
                        String csv = loanIdArgs.get(0);
709
                        loanIds = Arrays.stream(csv.split(","))
710
                                .map(String::trim)
711
                                .map(Integer::parseInt)
712
                                .collect(Collectors.toList());
713
                    }
34321 ranu 714
                    scheduledTasksTest.findLoanTransactionMapingAccordingLoan(loanIds);
34309 ranu 715
                } else if (args.containsOption("testNew2")) {
34308 ranu 716
                    if (args.containsOption("createLoan")) {
717
                        // Extract each parameter
718
                        int transactionId = 0;
719
                        double invoiceAmount = 0.0;
720
                        String invoiceNumber = "";
721
 
722
                        if (args.containsOption("transactionId")) {
723
                            transactionId = Integer.parseInt(args.getOptionValues("transactionId").get(0));
724
                        }
725
 
726
                        if (args.containsOption("invoiceAmount")) {
727
                            invoiceAmount = Double.parseDouble(args.getOptionValues("invoiceAmount").get(0));
728
                        }
729
 
730
                        if (args.containsOption("invoiceNumber")) {
731
                            invoiceNumber = args.getOptionValues("invoiceNumber").get(0);
732
                        }
733
 
734
                        // Call your method
735
                        scheduledTasksTest.createLoanForBillingByTransactionIdAndInvoiceNumber(transactionId, invoiceAmount, invoiceNumber);
736
                    }
737
 
32482 amit.gupta 738
                } else {
31753 tejbeer 739
                    System.out.println("Called sendPartnerInvestmentDetails");
740
                    scheduledTasks.sendPartnerInvestmentDetails();
741
                }
742
                System.exit(0);
743
            }
744
            if (args.containsOption("2")) {
745
                if (args.containsOption("test")) {
746
                    String[] emails = new String[args.getOptionValues("email").size()];
747
                    scheduledTasks.sendAgeingReport(args.getOptionValues("email").toArray(emails));
748
                } else {
749
                    scheduledTasks.sendAgeingReport();
750
                }
751
                System.exit(0);
752
            }
33457 amit.gupta 753
 
31753 tejbeer 754
            if (args.containsOption("cancelOrder")) {
755
                List<String> invoiceNumbers = args.getOptionValues("invoiceNumber");
756
                runOnceTasks.cancelOrder(invoiceNumbers);
757
            }
36554 amit 758
            if (args.containsOption("postCreditNoteForDuplicateInvoice")) {
759
                String duplicateInvoice = args.getOptionValues("duplicateInvoice").get(0);
760
                String activeInvoice = args.getOptionValues("activeInvoice").get(0);
761
                runOnceTasks.postCreditNoteForDuplicateInvoice(duplicateInvoice, activeInvoice);
762
            }
31753 tejbeer 763
            if (args.containsOption("migratePurchase")) {
764
                runOnceTasks.migratePurchase();
765
            }
766
            if (args.containsOption("migratepd")) {
767
                scheduledTasks.moveImeisToPriceDropImeis();
768
            }
769
            if (args.containsOption("walletmismatch")) {
770
                scheduledTasks.walletmismatch();
771
            }
772
            if (args.containsOption("schemewalletmismatch")) {
773
                scheduledTasks.schemewalletmismatch();
774
            }
775
            if (args.containsOption("gst")) {
776
                scheduledTasks.gst();
777
            }
778
            if (args.containsOption("mailDashboardScreenshots")) {
779
                runOnceTasks.mailDashboardScreenshots();
780
            }
781
            if (args.containsOption("notifyLead")) {
782
                scheduledTasks.notifyLead();
783
                scheduledTasks.notifyVisits();
784
            }
785
            if (args.containsOption("fixgrn")) {
786
                runOnceTasks.fixGrn();
787
            }
788
            if (args.containsOption("pbfix")) {
789
                runOnceTasks.pbfix();
790
            }
791
            if (args.containsOption("mongom")) {
792
                runOnceTasks.mongom();
793
            }
794
            if (args.containsOption("processPd")) {
795
                int priceDropId = Integer.parseInt(args.getOptionValues("processPd").get(0));
796
                runOnceTasks.processPd(priceDropId);
797
            }
798
            if (args.containsOption("samsung")) {
799
                if (args.containsOption("ym")) {
800
                    int ym = Integer.parseInt(args.getOptionValues("ym").get(0));
801
                    runOnceTasks.fetchImeiActivation(ym);
802
                }
803
                runOnceTasks.fetchImeiActivation(0);
804
            }
805
            if (args.containsOption("fixdupimeigrn")) {
806
                runOnceTasks.fixDupGrns();
807
            }
808
            if (args.containsOption("cancel")) {
36053 amit 809
                boolean recreatePri = args.containsOption("recreatePri");
810
                runOnceTasks.cancelDn(args.getOptionValues("dn").get(0), recreatePri);
31753 tejbeer 811
            }
812
            if (args.containsOption("fixScheme")) {
813
                runOnceTasks.fixScheme();
814
            }
815
            if (args.containsOption("syncLeads")) {
816
                leadSyncRunner.syncLeads();
817
            }
818
            if (args.containsOption("testCs")) {
819
                int category = Integer.parseInt(args.getOptionValues("category").get(0));
820
                EscalationType escalationType = EscalationType.valueOf(args.getOptionValues("escalation").get(0));
821
                int fofoId = Integer.parseInt(args.getOptionValues("fofoid").get(0));
822
                csService.getAuthUserId(category, escalationType, fofoId);
823
            }
824
            if (args.containsOption("duporder")) {
825
                runOnceTasks.removeDuplicateOrders();
826
            }
827
            if (args.containsOption("createDummyInvoices")) {
828
                runOnceTasks.createDummyInvoices();
829
            }
28921 tejbeer 830
 
31753 tejbeer 831
            if (args.containsOption("createGeofence")) {
832
                runOnceTasks.createGeofence();
833
            }
834
            if (args.containsOption("getAllGeofences")) {
835
                runOnceTasks.getAllGeofences();
836
            }
837
            if (args.containsOption("payMonthlyInvestment")) {
838
                investmentRelatedTasks.payMonthlyInvestment();
839
            }
840
            if (args.containsOption("evaluateActualInvestmentPayout")) {
841
                investmentRelatedTasks.evaluateActualInvestmentPayout();
842
            }
843
            if (args.containsOption("deleteGeofences")) {
844
                List<String> geofenceIds = args.getOptionValues("geofenceId");
845
                runOnceTasks.deleteGeofences(geofenceIds);
846
            }
847
            if (args.containsOption("createOffers")) {
848
                if (args.containsOption("fileName")) {
849
                    String fileName = args.getOptionValues("fileName").get(0);
850
                    FileInputStream stream = new FileInputStream(fileName);
851
                    runOnceTasks.createOffers(stream);
852
                }
853
            }
854
            if (args.containsOption("schemeout")) {
855
                if (args.containsOption("invoices")) {
856
                    String invoicesString = args.getOptionValues("invoices").get(0);
857
                    List<String> invoices = Arrays.asList(invoicesString.split(","));
858
                    scheduledTasks.processSchemeOut(invoices);
859
                }
860
            }
861
            if (args.containsOption("schemein")) {
862
                if (args.containsOption("invoices")) {
863
                    String invoicesString = args.getOptionValues("invoices").get(0);
864
                    List<String> invoices = Arrays.asList(invoicesString.split(","));
865
                    scheduledTasks.processSchemeIn(invoices);
866
                }
867
            }
28921 tejbeer 868
 
31753 tejbeer 869
            if (args.containsOption("fixScans")) {
870
                runOnceTasks.fixScans();
871
            }
872
            if (args.containsOption("fixPrebookingOrderGrn")) {
873
                runOnceTasks.genericCreateCurrentInventorySnapshot();
874
            }
875
            if (args.containsOption("fixOurSerialized")) {
876
                if (args.containsOption("orderIds")) {
877
                    String orderIdsString = args.getOptionValues("orderIds").get(0);
878
                    List<Integer> orderIds = Arrays.asList(orderIdsString.split(",")).stream().map(x -> Integer.parseInt(x)).collect(Collectors.toList());
879
                    // runOnceTasks.fixOurSerialized(orderIds);
880
                }
881
            }
29776 tejbeer 882
 
31753 tejbeer 883
            if (args.containsOption("reverseMaa")) {
884
                runOnceTasks.reverseMaa();
885
            }
29776 tejbeer 886
 
31753 tejbeer 887
            if (args.containsOption("fixOffer")) {
888
                runOnceTasks.fixOffer();
889
            }
29794 tejbeer 890
 
31753 tejbeer 891
            if (args.containsOption("opporeno")) {
892
                runOnceTasks.opporeno();
893
            }
30309 amit.gupta 894
 
31753 tejbeer 895
            if (args.containsOption("fixorders")) {
896
                runOnceTasks.fixOrders();
897
            }
898
            if (args.containsOption("fixreservations")) {
899
                runOnceTasks.fixReservations();
900
            }
901
            if (args.containsOption("addinvestment")) {
902
                runOnceTasks.addInvestment();
903
            }
904
            if (args.containsOption("brandregion")) {
905
                runOnceTasks.brandRegion();
906
            }
907
            if (args.containsOption("rollOutUpgardedMargins")) {
35520 amit 908
                scheduledTasks.rollOutUpgardedMargins(Arrays.asList(175140172, 175140189));
31753 tejbeer 909
            }
34029 ranu 910
            if (args.containsOption("pushRbmTargets")) {
911
                scheduledTasks.persistRbmTodayTargets();
912
            }
31753 tejbeer 913
            if (args.containsOption("rollOutUpgardedMarginsNextMonth")) {
35524 amit 914
                System.out.println("In rollOutUpgardedMarginsNextMonth");
35532 amit 915
                scheduledTasks.rollOutUpgardedMarginsNextMonth(Arrays.asList(175140172, 175140189, 175138897));
31753 tejbeer 916
            }
917
            if (args.containsOption("checkCancellationMargin")) {
918
                scheduledTasks.checkCancellationMargin();
919
            }
920
            if (args.containsOption("reviewUncontactablePartner")) {
921
                scheduledTasks.reviewUncontactablePartner();
922
            }
33078 ranu 923
            if (args.containsOption("reviewNonSdBuyingBrand")) {
924
                scheduledTasks.reviewNonSdBuyingBrand();
925
            }
31753 tejbeer 926
            if (args.containsOption("sendWelcomeEmail")) {
927
                onBoardingRelatedSchelduleTask.sendWelcomeEmail();
928
            }
29814 tejbeer 929
 
31753 tejbeer 930
            if (args.containsOption("partnerOnboardingLegalMigration")) {
931
                onBoardingRelatedSchelduleTask.partnerOnboardingLegalMigration();
932
            }
31031 amit.gupta 933
 
33526 amit.gupta 934
            if(args.containsOption("moveOrders")) {
935
                runOnceTasks.moveOrders();
936
            }
937
 
31753 tejbeer 938
            if (args.containsOption("addKycLegalMigration")) {
939
                onBoardingRelatedSchelduleTask.addKycLegalMigration();
940
            }
29776 tejbeer 941
 
942
 
31753 tejbeer 943
            if (args.containsOption("pushDataToSolr")) {
944
                listing.pushDataToSolr();
945
            }
30120 amit.gupta 946
 
31753 tejbeer 947
            if (args.containsOption("testGstPro")) {
948
                System.out.println("TestGstProc called");
949
                try {
950
                    runOnceTasks.updateIrnsToInvoices();
951
                } catch (Exception e) {
952
                    e.printStackTrace();
953
                }
954
            }
29308 tejbeer 955
 
37058 amit 956
            if (args.containsOption("regenerateBilledInvoices")) {
957
                if (args.containsOption("fromTime") && args.containsOption("toTime")) {
958
                    LocalDateTime fromTime = LocalDateTime.parse(args.getOptionValues("fromTime").get(0));
959
                    LocalDateTime toTime = LocalDateTime.parse(args.getOptionValues("toTime").get(0));
960
                    runOnceTasks.regenerateBilledInvoices(fromTime, toTime);
961
                } else {
962
                    System.out.println("regenerateBilledInvoices requires --fromTime and --toTime (ISO, e.g. 2026-06-01T00:00:00)");
963
                }
964
                System.exit(0);
965
            }
966
 
31753 tejbeer 967
            if (args.containsOption("reverseSchemeCancelInvoice")) {
968
                if (args.containsOption("invoice")) {
969
                    String invoice = args.getOptionValues("invoice").get(0);
970
                    runOnceTasks.reverseSchemes(invoice);
971
                }
972
            }
29863 tejbeer 973
 
31753 tejbeer 974
            if (args.containsOption("reverseInvalidActivation")) {
975
                if (args.containsOption("inventoryids")) {
976
                    String inventoryItemIdsString = args.getOptionValues("inventoryids").get(0);
977
                    List<Integer> inventoryItemIds = new ArrayList<>();
978
                    for (String inventoryItemIdString : inventoryItemIdsString.split(",")) {
979
                        int inventoryItemId = Integer.parseInt(inventoryItemIdString.trim());
980
                        inventoryItemIds.add(inventoryItemId);
981
                    }
982
                    runOnceTasks.reverseInvalidActivation(inventoryItemIds);
983
                }
984
            }
29863 tejbeer 985
 
31753 tejbeer 986
            if (args.containsOption("runme")) {
987
                runOnceTasks.runMe();
988
            }
989
            if (args.containsOption("" + "")) {
990
                upgradeOfferService.authenticateUser();
991
            }
992
            if (args.containsOption("mandiiUser")) {
993
                runOnceTasks.mandiiUser(args.getOptionValues("firstName").get(0), args.getOptionValues("lastName").get(0), args.getOptionValues("pan").get(0), args.getOptionValues("dob").get(0), args.getOptionValues("aadhaar").get(0), args.getOptionValues("gender").get(0), args.getOptionValues("father").get(0));
994
            }
30335 amit.gupta 995
 
31753 tejbeer 996
            if (args.containsOption("mandiiUsers")) {
997
                if (args.containsOption("pan")) {
998
                    runOnceTasks.mandiiUsers(args.getOptionValues("pan").get(0));
999
                } else {
1000
                    runOnceTasks.mandiiUsers();
1001
                }
1002
            }
30576 amit.gupta 1003
 
37472 amit 1004
            // Oppo and realme are one pass now, so one option drives both. Note this
1005
            // runs the FULL daily pass -- everything due today, not a 25-imei sample.
1006
            if (args.containsOption("checkBrowserImeiActivation")) {
1007
                standAlone.checkBrowserImeiActivation();
31753 tejbeer 1008
            }
30616 amit.gupta 1009
 
31753 tejbeer 1010
            /*
1011
             * if (args.containsOption("checkRealmeImeiStatus")) { try {
1012
             * standAlone.checkRealmeImeiStatus(); } catch (Exception e) {
1013
             * e.printStackTrace(); } }
1014
             */
30616 amit.gupta 1015
 
31753 tejbeer 1016
            if (args.containsOption("amazonPurchase")) {
1017
                try {
1018
                    runOnceTasks.amazonPurchase();
1019
                } catch (Exception e) {
1020
                    e.printStackTrace();
1021
                }
1022
            }
30641 amit.gupta 1023
 
31753 tejbeer 1024
            if (args.containsOption("getCaptchaCode")) {
1025
                try {
1026
                    captchaService.getCaptchaCode("/home/amit/Desktop/generatingCodes.jpg");
1027
                } catch (Exception e) {
1028
                    e.printStackTrace();
1029
                }
1030
            }
30641 amit.gupta 1031
 
37326 amit 1032
            // --backfillMissingEwb --invoiceNumbers=A,B,C [--dryRun]
1033
            // Recovers EWB details from NIC for invoices whose IRN was recovered via DUPIRN, then
1034
            // re-renders their PDFs so the e-way bill section appears.
1035
            if (args.containsOption("backfillMissingEwb")) {
1036
                try {
1037
                    List<String> invoiceNumbers = Arrays.stream(
1038
                                    args.getOptionValues("invoiceNumbers").get(0).split(","))
1039
                            .map(String::trim).filter(x -> !x.isEmpty()).collect(Collectors.toList());
1040
                    boolean dryRun = args.containsOption("dryRun");
1041
                    System.out.println("backfillMissingEwb: " + invoiceNumbers.size()
1042
                            + " invoice(s), dryRun=" + dryRun);
1043
                    runOnceTasks.backfillMissingEwb(invoiceNumbers, dryRun);
1044
                } catch (Exception e) {
1045
                    e.printStackTrace();
1046
                }
1047
            }
1048
 
31753 tejbeer 1049
            if (args.containsOption("testIrnLive")) {
1050
                try {
1051
                    runOnceTasks.testIrnLive(args.getOptionValues("invoiceNumber").get(0));
1052
                } catch (Exception e) {
1053
                    e.printStackTrace();
1054
                }
1055
            }
30659 amit.gupta 1056
 
31753 tejbeer 1057
            if (args.containsOption("createoffercriteria")) {
1058
                try {
1059
                    runOnceTasks.createOfferCriteria();
1060
                } catch (Exception e) {
1061
                    e.printStackTrace();
1062
                }
1063
            }
30659 amit.gupta 1064
 
31753 tejbeer 1065
            if (args.containsOption("fix-price-drops")) {
1066
                runOnceTasks.fixPriceDrop();
1067
            }
29035 tejbeer 1068
 
31753 tejbeer 1069
            if (args.containsOption("processSchemeByIds")) {
1070
                List<String> schemeIds = Arrays.asList(args.getOptionValues("ids").get(0).split(","));
1071
                List<Integer> schemeIdsInt = schemeIds.stream().map(x -> Integer.parseInt(x)).collect(Collectors.toList());
1072
                runOnceTasks.processSchemeByIds(schemeIdsInt);
1073
            }
30859 tejbeer 1074
 
31753 tejbeer 1075
            if (args.containsOption("updateSaholicCISTable")) {
1076
                runOnceTasks.updateSaholicCISTable();
1077
            }
30859 tejbeer 1078
 
31753 tejbeer 1079
            if (args.containsOption("mapbag")) {
1080
                runOnceTasks.mapBag();
1081
            }
30859 tejbeer 1082
 
34579 vikas.jang 1083
            if (args.containsOption("todayBidPO")) {
34443 vikas.jang 1084
                runOnceTasks.processBids(ProfitMandiConstants.BID_CRON_ENUM.TODAY);
1085
            }
1086
 
34579 vikas.jang 1087
            if (args.containsOption("yesterdayBidPO")) {
1088
                runOnceTasks.processBids(ProfitMandiConstants.BID_CRON_ENUM.YESTERDAY);
1089
            }
1090
 
34547 vikas.jang 1091
            if (args.containsOption("biddingConsolidatedMessage")) {
1092
                runOnceTasks.consolidatedBiddingMessage();
1093
            }
1094
 
1095
            if (args.containsOption("sendMailWhatsAppAfterLoanDueDate")) {
1096
                scheduledTasks.sendMailWhatsAppAfterLoanDueDate();
1097
            }
1098
 
34836 vikas 1099
            if (args.containsOption("yesterdayTrackingReport")) {
1100
                runOnceTasks.yesterdayTrackingReport();
34770 vikas.jang 1101
            }
1102
 
31753 tejbeer 1103
            System.exit(0);
1104
        }
30859 tejbeer 1105
 
31753 tejbeer 1106
        if (args.containsOption("calculateInterestAccured")) {
30929 tejbeer 1107
 
31753 tejbeer 1108
            scheduledTasks.calculateInterestAccured();
1109
            System.exit(0);
1110
        }
30929 tejbeer 1111
 
31753 tejbeer 1112
        if (args.containsOption("loanSettlement")) {
30890 amit.gupta 1113
 
31753 tejbeer 1114
            scheduledTasks.loanSettlement();
1115
            System.exit(0);
1116
        }
30896 amit.gupta 1117
 
31753 tejbeer 1118
        if (args.containsOption("dailyLoanAlert")) {
30936 tejbeer 1119
 
31753 tejbeer 1120
            scheduledTasks.dailyLoanAlert();
1121
            System.exit(0);
1122
        }
30982 tejbeer 1123
 
36564 amit 1124
        if (args.containsOption("testFlagshipBilling")) {
1125
            int trId = Integer.parseInt(args.getOptionValues("testFlagshipBilling").get(0));
1126
            double amt = Double.parseDouble(args.getOptionValues("testFlagshipBillingAmount").get(0));
1127
            String inv = args.getOptionValues("testFlagshipBillingInvoice").get(0);
1128
            scheduledTasks.testFlagshipBilling(trId, amt, inv);
1129
            System.exit(0);
1130
        }
1131
 
36554 amit 1132
        if (args.containsOption("convertExpiredFlagshipCredits")) {
1133
            scheduledTasks.convertExpiredFlagshipCredits();
1134
            System.exit(0);
1135
        }
1136
 
36745 ranu 1137
        // Manual back-fill for missed-beat detection. Default: today.
1138
        // Usage: --detectMissedBeats [--date=YYYY-MM-DD]
1139
        if (args.containsOption("detectMissedBeats")) {
1140
            LocalDate date = LocalDate.now();
1141
            if (args.containsOption("date")) {
1142
                date = LocalDate.parse(args.getOptionValues("date").get(0));
1143
            }
1144
            int inserted = beatMissDetectorRunner.syncMissesForDate(date);
1145
            LOGGER.info("detectMissedBeats: {} miss rows inserted for {}", inserted, date);
1146
            System.exit(0);
1147
        }
1148
 
36554 amit 1149
        if (args.containsOption("notifyFlagshipExpiryIn2Days")) {
1150
            scheduledTasks.notifyFlagshipExpiryIn2Days();
1151
            System.exit(0);
1152
        }
1153
 
31753 tejbeer 1154
        if (args.containsOption("notifyDefaultLoans")) {
1155
            scheduledTasks.notifyDefaultLoans();
1156
            System.exit(0);
1157
        }
31446 amit.gupta 1158
 
31753 tejbeer 1159
        if (args.containsOption("fixinsurance")) {
1160
            runOnceTasks.addMissingWalletDebitsForInsurance();
1161
            System.exit(0);
1162
        }
31604 tejbeer 1163
 
31753 tejbeer 1164
        if (args.containsOption("processActivatedImeisForSchemes")) {
1165
            scheduledTasks.processActivatedImeisForSchemes();
1166
            System.exit(0);
1167
        }
31604 tejbeer 1168
 
36306 amit 1169
        if (args.containsOption("updatePartnerLimitWithBatch")) {
1170
            System.out.println("Running updatePartnerLimit with batch tracking");
1171
            batchScheduledTasks.updatePartnerLimitWithBatch();
1172
            System.exit(0);
1173
        }
1174
 
1175
        if (args.containsOption("processOffersWithBatch")) {
1176
            for (String val : args.getOptionValues("processOffersWithBatch")) {
1177
                for (String id : val.split(",")) {
1178
                    int offerId = Integer.parseInt(id.trim());
1179
                    System.out.println("Processing offer with batch: " + offerId);
1180
                    batchScheduledTasks.processOfferWithBatch(offerId);
1181
                }
1182
            }
1183
            System.exit(0);
1184
        }
1185
 
31753 tejbeer 1186
        if (args.containsOption("notifyLoanDueDateCross")) {
1187
            scheduledTasks.notifyLoanDueDateCross();
1188
            System.exit(0);
1189
        }
34275 tejus.loha 1190
        if (args.containsOption("sendTenOrMoreOrderStockReport")) {
1191
            scheduledTasks.send10OrMoreOlderStockReport();
1192
            System.exit(0);
1193
        }
31604 tejbeer 1194
 
31753 tejbeer 1195
        if (args.containsOption("alertForDueDate")) {
1196
            scheduledTasks.alertForDueDate();
1197
            System.exit(0);
1198
        }
31648 tejbeer 1199
 
31753 tejbeer 1200
        if (args.containsOption("fetchParnterStats")) {
1201
            scheduledTasks.fetchParnterStats();
1202
            System.exit(0);
1203
        }
1204
 
1205
        if (args.containsOption("morning")) {
1206
            if (args.containsOption("0")) {
1207
                scheduledTasks.sendPartnerInvestmentDetails();
1208
            }
1209
            if (args.containsOption("1")) {
1210
                scheduledTasks.sendIndentTertiary();
1211
            }
1212
            // 0
1213
            if (args.containsOption("2")) {
1214
                scheduledTasks.calculateInterestAccured();
1215
            }
1216
            System.out.println("scheduledTasks.calculateInterestAccured()");
1217
            // 0
1218
            if (args.containsOption("3")) {
32831 amit.gupta 1219
                orderTrackingService.markDelhiveryOrderDelivered();
31753 tejbeer 1220
            }
1221
            System.out.println("scheduledTasks.markDelhiveryOrderDelivered()");
1222
            // 1
1223
            if (args.containsOption("4")) {
1224
                scheduledTasks.processActivatedImeisForSchemes();
1225
            }
1226
            System.out.println("scheduledTasks.processActivatedImeisForSchemes()");
1227
            // 2
1228
            if (args.containsOption("5")) {
1229
                scheduledTasks.processActivation();
1230
            }
1231
            System.out.println("scheduledTasks.processActivation()");
1232
            // 4
1233
            if (args.containsOption("6")) {
1234
                scheduledTasks.processPriceDrop();
1235
            }
1236
            System.out.println("scheduledTasks.processPriceDrop()");
1237
            // 5
1238
            if (args.containsOption("7")) {
1239
                scheduledTasks.loanSettlement();
1240
            }
1241
            System.out.println("scheduledTasks.loanSettlement()");
36554 amit 1242
            if (args.containsOption("7a")) {
1243
                scheduledTasks.convertExpiredFlagshipCredits();
1244
                scheduledTasks.notifyFlagshipExpiryIn2Days();
1245
            }
1246
            System.out.println("scheduledTasks.convertExpiredFlagshipCredits()");
31753 tejbeer 1247
            // 8
1248
            if (args.containsOption("8")) {
1249
                scheduledTasks.reviewUncontactablePartner();
1250
            }
1251
            // 9
33859 tejus.loha 1252
//            if (args.containsOption("9")) {
1253
//                onBoardingRelatedSchelduleTask.storeTimelinePromoterPending();
1254
//            }
1255
//            // 9
1256
//            if (args.containsOption("10")) {
1257
//                onBoardingRelatedSchelduleTask.advancePaymentPendinglegalAlert();
1258
//            }
31753 tejbeer 1259
            // sendPartnerInvestment
1260
            if (args.containsOption("11")) {
1261
                scheduledTasks.sendPartnerInvestmentDetails();
1262
            }
37236 amit 1263
            if (args.containsOption("1")) {
36993 amit 1264
                // Defaults to a dry-run (harmless dev path); pass --live to run the real pipeline.
1265
                boolean dryRun = !args.containsOption("live");
1266
                System.out.println("Calling sendCreditNote (dryRun=" + dryRun + ")");
34029 ranu 1267
                YearMonth yearMonth = YearMonth.now().minusMonths(1);
36993 amit 1268
                scheduledTasks.sendCreditNote(yearMonth, dryRun);
31753 tejbeer 1269
            }
37258 amit 1270
            if (args.containsOption("syncHotDealFlags")) {
1271
                try {
1272
                    System.out.println("Calling syncHotDealFlags");
1273
                    scheduledTasks.syncHotDealFlags();
1274
                    System.out.println("syncHotDealFlags completed successfully");
1275
                } catch (Exception e) {
1276
                    System.err.println("syncHotDealFlags FAILED: " + e.getMessage());
1277
                    e.printStackTrace(System.err);
1278
                }
1279
            }
37238 amit 1280
            if (args.containsOption("regenMarginIrns")) {
1281
                // One-time: generate missing IRNs for issued margin CN/DNs (mixed-sign docs
1282
                // now netted per GST rate in the payload). Dry-run by default; --live to run.
1283
                boolean dryRun = !args.containsOption("live");
1284
                try {
1285
                    String ymStr = args.getOptionValues("regenMarginIrns").isEmpty() ? null : args.getOptionValues("regenMarginIrns").get(0);
1286
                    YearMonth yearMonth = ymStr != null && !ymStr.isEmpty() ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1287
                    System.out.println("regenMarginIrns for " + yearMonth + " (dryRun=" + dryRun + ")");
1288
                    scheduledTasks.regenMarginIrns(yearMonth, dryRun);
1289
                    System.out.println("regenMarginIrns completed successfully");
1290
                } catch (Exception e) {
1291
                    System.err.println("regenMarginIrns FAILED: " + e.getMessage());
1292
                    e.printStackTrace(System.err);
1293
                }
1294
            }
37236 amit 1295
            if (args.containsOption("cancelMarginDnIrns")) {
1296
                // One-time: cancel IRNs of margin DNs inflated by the abs bug (24h NIC window!)
1297
                // and mark them cancelled so a sendCreditNote rerun reissues corrected DNs.
1298
                // Defaults to dry-run; pass --live to actually cancel.
1299
                boolean dryRun = !args.containsOption("live");
1300
                try {
1301
                    String ymStr = args.getOptionValues("cancelMarginDnIrns").isEmpty() ? null : args.getOptionValues("cancelMarginDnIrns").get(0);
1302
                    YearMonth yearMonth = ymStr != null && !ymStr.isEmpty() ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1303
                    System.out.println("cancelMarginDnIrns for " + yearMonth + " (dryRun=" + dryRun + ")");
1304
                    scheduledTasks.cancelMarginDnIrns(yearMonth, dryRun);
1305
                    System.out.println("cancelMarginDnIrns completed successfully");
1306
                } catch (Exception e) {
1307
                    System.err.println("cancelMarginDnIrns FAILED: " + e.getMessage());
1308
                    e.printStackTrace(System.err);
1309
                }
1310
            }
37232 amit 1311
            if (args.containsOption("corrMarginCNs")) {
1312
                // One-time corrective CNs against wrongly-inflated margin DNs.
1313
                // Defaults to dry-run; pass --live to issue real documents.
1314
                boolean dryRun = !args.containsOption("live");
1315
                try {
1316
                    String ymStr = args.getOptionValues("corrMarginCNs").isEmpty() ? null : args.getOptionValues("corrMarginCNs").get(0);
1317
                    YearMonth yearMonth = ymStr != null && !ymStr.isEmpty() ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1318
                    System.out.println("corrMarginCNs for " + yearMonth + " (dryRun=" + dryRun + ")");
1319
                    scheduledTasks.corrMarginCNs(yearMonth, dryRun);
1320
                    System.out.println("corrMarginCNs completed successfully");
1321
                } catch (Exception e) {
1322
                    System.err.println("corrMarginCNs FAILED: " + e.getMessage());
1323
                    e.printStackTrace(System.err);
1324
                }
1325
            }
36220 amit 1326
            if (args.containsOption("genDNs")) {
1327
                System.out.println("Calling genDNs");
36254 amit 1328
                try {
1329
                    String ymStr = args.getOptionValues("genDNs").isEmpty() ? null : args.getOptionValues("genDNs").get(0);
1330
                    YearMonth yearMonth = ymStr != null ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1331
                    System.out.println("genDNs for " + yearMonth);
1332
                    scheduledTasks.genDNs(yearMonth);
1333
                    System.out.println("genDNs completed successfully");
1334
                } catch (Exception e) {
1335
                    System.err.println("genDNs FAILED: " + e.getMessage());
1336
                    e.printStackTrace(System.err);
1337
                }
36220 amit 1338
            }
36503 amit 1339
            if (args.containsOption("genDNsForCNs")) {
1340
                System.out.println("Calling genDNsForCNs");
1341
                try {
1342
                    String cnList = args.getOptionValues("genDNsForCNs").get(0);
1343
                    List<String> cnNumbers = Arrays.asList(cnList.split(","));
1344
                    System.out.println("genDNsForCNs for " + cnNumbers.size() + " CNs: " + cnNumbers);
1345
                    scheduledTasks.genDNsForCNs(cnNumbers);
1346
                    System.out.println("genDNsForCNs completed successfully");
1347
                } catch (Exception e) {
1348
                    System.err.println("genDNsForCNs FAILED: " + e.getMessage());
1349
                    e.printStackTrace(System.err);
1350
                }
1351
            }
36433 amit 1352
            System.exit(0);
1353
        }
1354
 
31753 tejbeer 1355
    }
24848 amit.gupta 1356
}