43 #include "../../Landscape/ls.h"
44 #include "../../Landscape/cropprogs/PLWinterBarley.h"
85 a_field->SetMDates(0, 0, g_date->DayInYear(20, 7));
86 a_field->SetMDates(1, 0, g_date->DayInYear(25, 7));
87 a_field->SetMDates(0, 1, 0);
88 a_field->SetMDates(1, 1, g_date->DayInYear(30, 7));
89 a_field->SetMDates(0, 2, 0);
90 a_field->SetMDates(1, 2, g_date->DayInYear(25, 8));
91 a_field->SetMDates(0, 3, 0);
92 a_field->SetMDates(1, 3, g_date->DayInYear(25, 8));
96 a_field->SetMConstants(0, 1);
106 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
107 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
109 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): ",
"Harvest too late for the next crop to start!!!");
111 g_msg->Warn(
"Next Crop ", (
double)almassnum);
114 for (
int i = 0; i < noDates; i++) {
115 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
116 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
118 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
119 a_field->SetMConstants(i, 0);
120 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
128 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
129 if (g_date->Date() < d1) {
131 printf(
"Poly: %d\n", a_field->GetPoly());
132 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
134 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
136 g_msg->Warn(
"Next Crop ", (
double)almassnum);
140 if (g_date->Date() > d1) {
142 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): ",
"Crop start attempt after last possible start date");
143 g_msg->Warn(WARN_BUG,
"Previous Crop ",
"");
144 a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex());
146 g_msg->Warn(
"Next Crop ", (
double)almassnum);
165 d1 = g_date->OldDays() + g_date->DayInYear(20, 7);
182 if (!a_farm->
FP_Slurry(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
199 if (a_ev->
m_lock || a_farm->DoIt(40))
201 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
216 if (a_ev->
m_lock || a_farm->DoIt(50))
218 if (!a_farm->StubblePlough(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
234 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
241 if (a_ev->
m_lock || a_farm->DoIt(40))
243 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->Date() + 7 - g_date->DayInYear())) {
248 d1 = g_date->Date() + 1;
249 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 8)) {
250 d1 = g_date->OldDays() + g_date->DayInYear(10, 8);
252 if (a_farm->IsStockFarmer())
259 if (!a_farm->StubbleHarrowing(a_field, 0.0, g_date->DayInYear(10, 9) - g_date->DayInYear())) {
263 d1 = g_date->Date() + 1;
264 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 8)) {
265 d1 = g_date->OldDays() + g_date->DayInYear(10, 8);
267 if (a_farm->IsStockFarmer())
276 if ((a_ev->
m_lock || a_farm->DoIt(static_cast<int>((5.0 / 95.0) * 100))) && (
PL_WB_FERTI_P1 ==
false))
278 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
288 if ((a_ev->
m_lock || a_farm->DoIt(static_cast<int>((40.0 / 60.0) * 100))) && (
PL_WB_FERTI_S1 ==
false))
290 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
298 if (a_ev->
m_lock || a_farm->DoIt(80))
300 if (!a_farm->AutumnPlough(a_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
307 d1 = g_date->OldDays() + g_date->DayInYear(5, 9);
308 if (g_date->Date() > d1)
315 if (a_farm->IsStockFarmer())
327 if (!a_farm->AutumnRoll(a_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
331 if (a_farm->IsStockFarmer())
339 if (!a_farm->StubbleCultivatorHeavy(a_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
343 if (a_farm->IsStockFarmer())
350 if (a_ev->
m_lock || a_farm->DoIt(45))
352 if (!a_farm->FP_NPKS(a_field, 0.0, g_date->DayInYear(18, 9) - g_date->DayInYear())) {
360 if (a_ev->
m_lock || a_farm->DoIt(45))
362 if (!a_farm->FA_NPKS(a_field, 0.0, g_date->DayInYear(18, 9) - g_date->DayInYear())) {
371 if (a_ev->
m_lock || a_farm->DoIt(30))
373 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(19, 9) - g_date->DayInYear())) {
383 if (!a_farm->AutumnSow(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
392 if (a_farm->IsStockFarmer())
397 if (a_farm->IsStockFarmer())
402 if (a_farm->IsStockFarmer())
410 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
419 if (a_farm->IsStockFarmer())
424 if (a_farm->IsStockFarmer())
429 if (a_farm->IsStockFarmer())
437 if (a_ev->
m_lock || a_farm->DoIt(80))
439 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
447 if (a_ev->
m_lock || a_farm->DoIt(48))
449 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
458 if (a_ev->
m_lock || a_farm->DoIt(5))
460 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
468 if (a_ev->
m_lock || a_farm->DoIt(75))
470 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
475 d1 = g_date->Date() + 14;
476 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 5)) {
477 d1 = g_date->OldDays() + g_date->DayInYear(1, 5);
482 if (a_ev->
m_lock || a_farm->DoIt(58))
484 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(25, 5) - g_date->DayInYear())) {
492 if (a_ev->
m_lock || a_farm->DoIt(28))
494 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
503 if (a_ev->
m_lock || a_farm->DoIt(15))
505 if (a_field->GetGreenBiomass() <= 0) {
514 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
529 if (a_ev->
m_lock || a_farm->DoIt(23))
535 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
547 if (a_ev->
m_lock || a_farm->DoIt(23))
553 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
566 if (a_ev->
m_lock || a_farm->DoIt(49))
568 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
583 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->Date() + 21 - g_date->DayInYear())) {
592 if (a_ev->
m_lock || a_farm->DoIt(28))
594 if (!a_farm->FP_PK(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
603 if (a_ev->
m_lock || a_farm->DoIt(28))
605 if (!a_farm->FA_PK(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
614 if (a_ev->
m_lock || a_farm->DoIt(95))
616 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
621 d1 = g_date->Date() + 10;
622 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 3)) {
623 d1 = g_date->OldDays() + g_date->DayInYear(20, 3);
628 if (a_ev->
m_lock || a_farm->DoIt(95))
630 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
635 d1 = g_date->Date() + 10;
636 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 3)) {
637 d1 = g_date->OldDays() + g_date->DayInYear(20, 3);
642 if (a_ev->
m_lock || a_farm->DoIt(93))
644 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
652 if (a_ev->
m_lock || a_farm->DoIt(93))
654 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
662 if (a_ev->
m_lock || a_farm->DoIt(43))
664 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
672 if (a_ev->
m_lock || a_farm->DoIt(43))
674 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
683 if (a_ev->
m_lock || a_farm->DoIt(28))
685 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
693 if (a_ev->
m_lock || a_farm->DoIt(28))
695 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
703 if (a_ev->
m_lock || a_farm->DoIt(5))
705 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
713 if (a_ev->
m_lock || a_farm->DoIt(5))
715 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
725 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
734 if (a_farm->IsStockFarmer())
737 if (a_ev->
m_lock || a_farm->DoIt(10))
739 if (a_field->GetMConstants(0) == 0) {
740 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
741 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): failure in 'StrawChopping' execution",
"");
746 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
765 if (a_ev->
m_lock || a_farm->DoIt(90))
767 if (a_field->GetMConstants(0) == 0) {
768 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
769 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): failure in 'StrawChopping' execution",
"");
774 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
791 if (a_field->GetMConstants(1) == 0) {
792 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
793 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): failure in 'HayBailing' execution",
"");
798 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1, 1) - g_date->DayInYear())) {
803 if (a_farm->IsStockFarmer())
810 if (a_ev->
m_lock || a_farm->DoIt(12))
812 if (a_field->GetMConstants(2) == 0) {
813 if (!a_farm->FP_RSM(a_field, 0.0, -1)) {
814 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): failure in 'FP_RSM' execution",
"");
819 if (!a_farm->FP_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
825 if (a_farm->IsStockFarmer())
832 if (a_ev->
m_lock || a_farm->DoIt(12))
834 if (a_field->GetMConstants(2) == 0) {
835 if (!a_farm->FA_RSM(a_field, 0.0, -1)) {
836 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): failure in 'FA_RSM' execution",
"");
841 if (!a_farm->FA_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
847 if (a_farm->IsStockFarmer())
854 if (a_ev->
m_lock || a_farm->DoIt(22))
856 if (a_field->GetMConstants(3) == 0) {
857 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
858 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): failure in 'FP_Calcium' execution",
"");
863 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
874 if (a_ev->
m_lock || a_farm->DoIt(22))
876 if (a_field->GetMConstants(3) == 0) {
877 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
878 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): failure in 'FA_Calcium' execution",
"");
883 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
894 g_msg->Warn(WARN_BUG,
"PLWinterBarley::Do(): "
895 "Unknown event type! ",
"");