43 #include "../../Landscape/ls.h"
44 #include "../../Landscape/cropprogs/PLWinterTriticale.h"
84 a_field->SetMDates(0, 0, g_date->DayInYear(5, 8));
85 a_field->SetMDates(1, 0, g_date->DayInYear(10, 8));
86 a_field->SetMDates(0, 1, 0);
87 a_field->SetMDates(1, 1, g_date->DayInYear(15, 8));
88 a_field->SetMDates(0, 2, 0);
89 a_field->SetMDates(1, 2, g_date->DayInYear(25, 8));
90 a_field->SetMDates(0, 3, 0);
91 a_field->SetMDates(1, 3, g_date->DayInYear(25, 8));
95 a_field->SetMConstants(0, 1);
105 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
106 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
108 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): ",
"Harvest too late for the next crop to start!!!");
110 g_msg->Warn(
"Next Crop ", (
double)almassnum);
113 for (
int i = 0; i < noDates; i++) {
114 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
115 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
117 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
118 a_field->SetMConstants(i, 0);
119 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
127 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
128 if (g_date->Date() < d1) {
130 printf(
"Poly: %d\n", a_field->GetPoly());
131 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
133 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
135 g_msg->Warn(
"Next Crop ", (
double)almassnum);
139 if (g_date->Date() > d1) {
141 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): ",
"Crop start attempt after last possible start date");
142 g_msg->Warn(WARN_BUG,
"Previous Crop ",
"");
143 a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex());
145 g_msg->Warn(
"Next Crop ", (
double)almassnum);
164 d1 = g_date->OldDays() + g_date->DayInYear(20, 7);
181 if (!a_farm->
FP_Slurry(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
198 if (a_ev->
m_lock || a_farm->DoIt(40))
200 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
215 if (a_ev->
m_lock || a_farm->DoIt(40))
217 if (!a_farm->StubblePlough(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
233 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
240 if (a_ev->
m_lock || a_farm->DoIt(40))
242 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->Date() + 7 - g_date->DayInYear())) {
247 d1 = g_date->Date() + 1;
248 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 8)) {
249 d1 = g_date->OldDays() + g_date->DayInYear(20, 8);
251 if (a_farm->IsStockFarmer())
258 if (!a_farm->StubbleHarrowing(a_field, 0.0, g_date->DayInYear(25, 9) - g_date->DayInYear())) {
262 d1 = g_date->Date() + 1;
263 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 8)) {
264 d1 = g_date->OldDays() + g_date->DayInYear(20, 8);
266 if (a_farm->IsStockFarmer())
277 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
287 if ((a_ev->
m_lock || a_farm->DoIt(static_cast<int>((40.0/60.0)*100))) && (
PL_WT_FERTI_S1==
false))
289 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
297 if (a_ev->
m_lock || a_farm->DoIt(80))
299 if (!a_farm->AutumnPlough(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
306 d1 = g_date->OldDays() + g_date->DayInYear(15, 9);
307 if (g_date->Date() > d1)
314 if (a_farm->IsStockFarmer())
326 if (!a_farm->AutumnRoll(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
330 if (a_farm->IsStockFarmer())
338 if (!a_farm->StubbleCultivatorHeavy(a_field, 0.0, g_date->DayInYear(30,9) - g_date->DayInYear())) {
342 if (a_farm->IsStockFarmer())
349 if (a_ev->
m_lock || a_farm->DoIt(45))
351 if (!a_farm->FP_NPKS(a_field, 0.0, g_date->DayInYear(3, 10) - g_date->DayInYear())) {
359 if (a_ev->
m_lock || a_farm->DoIt(45))
361 if (!a_farm->FA_NPKS(a_field, 0.0, g_date->DayInYear(3, 10) - g_date->DayInYear())) {
370 if (a_ev->
m_lock || a_farm->DoIt(30))
372 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(4, 10) - g_date->DayInYear())) {
382 if (!a_farm->AutumnSow(a_field, 0.0, g_date->DayInYear(5, 10) - g_date->DayInYear())) {
391 if (a_farm->IsStockFarmer())
396 if (a_farm->IsStockFarmer())
401 if (a_farm->IsStockFarmer())
409 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(5, 10) - g_date->DayInYear())) {
418 if (a_farm->IsStockFarmer())
423 if (a_farm->IsStockFarmer())
428 if (a_farm->IsStockFarmer())
436 if (a_ev->
m_lock || a_farm->DoIt(80))
438 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
446 if (a_ev->
m_lock || a_farm->DoIt(73))
448 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
457 if (a_ev->
m_lock || a_farm->DoIt(5))
459 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
467 if (a_ev->
m_lock || a_farm->DoIt(78))
469 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
474 d1 = g_date->Date() + 14;
475 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 5)) {
476 d1 = g_date->OldDays() + g_date->DayInYear(10, 5);
481 if (a_ev->
m_lock || a_farm->DoIt(68))
483 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 6) - g_date->DayInYear())) {
491 if (a_ev->
m_lock || a_farm->DoIt(10))
493 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
502 if (a_ev->
m_lock || a_farm->DoIt(5))
504 if (a_field->GetGreenBiomass() <= 0) {
513 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
528 if (a_ev->
m_lock || a_farm->DoIt(67))
534 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
546 if (a_ev->
m_lock || a_farm->DoIt(17))
552 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(25, 6) - g_date->DayInYear())) {
565 if (a_ev->
m_lock || a_farm->DoIt(63))
567 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
576 if (a_ev->
m_lock || a_farm->DoIt(50))
578 if (!a_farm->FP_PK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
587 if (a_ev->
m_lock || a_farm->DoIt(50))
589 if (!a_farm->FA_PK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
598 if (a_ev->
m_lock || a_farm->DoIt(99))
600 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
605 d1 = g_date->Date() + 10;
606 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
607 d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
612 if (a_ev->
m_lock || a_farm->DoIt(99))
614 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
619 d1 = g_date->Date() + 10;
620 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
621 d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
626 if (a_ev->
m_lock || a_farm->DoIt(91))
628 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
636 if (a_ev->
m_lock || a_farm->DoIt(91))
638 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
646 if (a_ev->
m_lock || a_farm->DoIt(35))
648 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
656 if (a_ev->
m_lock || a_farm->DoIt(35))
658 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
667 if (a_ev->
m_lock || a_farm->DoIt(53))
669 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
677 if (a_ev->
m_lock || a_farm->DoIt(53))
679 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
687 if (a_ev->
m_lock || a_farm->DoIt(5))
689 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
697 if (a_ev->
m_lock || a_farm->DoIt(5))
699 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
709 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
716 if (a_farm->IsStockFarmer())
719 if (a_ev->
m_lock || a_farm->DoIt(10))
721 if (a_field->GetMConstants(0) == 0) {
722 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
723 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): failure in 'StrawChopping' execution",
"");
728 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
747 if (a_ev->
m_lock || a_farm->DoIt(90))
749 if (a_field->GetMConstants(0) == 0) {
750 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
751 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): failure in 'StrawChopping' execution",
"");
756 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
773 if (a_field->GetMConstants(1) == 0) {
774 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
775 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): failure in 'HayBailing' execution",
"");
780 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1, 1) - g_date->DayInYear())) {
785 if (a_farm->IsStockFarmer())
792 if (a_ev->
m_lock || a_farm->DoIt(18))
794 if (a_field->GetMConstants(2) == 0) {
795 if (!a_farm->FP_RSM(a_field, 0.0, -1)) {
796 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): failure in 'FP_RSM' execution",
"");
801 if (!a_farm->FP_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
807 if (a_farm->IsStockFarmer())
814 if (a_ev->
m_lock || a_farm->DoIt(18))
816 if (a_field->GetMConstants(2) == 0) {
817 if (!a_farm->FA_RSM(a_field, 0.0, -1)) {
818 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): failure in 'FA_RSM' execution",
"");
823 if (!a_farm->FA_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
829 if (a_farm->IsStockFarmer())
836 if (a_ev->
m_lock || a_farm->DoIt(21))
838 if (a_field->GetMConstants(3) == 0) {
839 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
840 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): failure in 'FP_Calcium' execution",
"");
845 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
856 if (a_ev->
m_lock || a_farm->DoIt(21))
858 if (a_field->GetMConstants(3) == 0) {
859 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
860 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): failure in 'FA_Calcium' execution",
"");
865 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
876 g_msg->Warn(WARN_BUG,
"PLWinterTriticale::Do(): "
877 "Unknown event type! ",
"");