43 #include "../../Landscape/ls.h"
44 #include "../../Landscape/cropprogs/PLSpringBarley.h"
88 a_field->SetMDates(0, 0, g_date->DayInYear(15, 8));
89 a_field->SetMDates(1, 0, g_date->DayInYear(20, 8));
90 a_field->SetMDates(0, 1, 0);
91 a_field->SetMDates(1, 1, g_date->DayInYear(25, 8));
92 a_field->SetMDates(0, 2, 0);
93 a_field->SetMDates(1, 2, g_date->DayInYear(25, 8));
94 a_field->SetMDates(0, 3, 0);
95 a_field->SetMDates(1, 3, g_date->DayInYear(25, 8));
99 a_field->SetMConstants(0, 1);
109 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
110 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
112 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): ",
"Harvest too late for the next crop to start!!!");
114 g_msg->Warn(
"Next Crop ", (
double)almassnum);
117 for (
int i = 0; i < noDates; i++) {
118 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
119 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
121 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
122 a_field->SetMConstants(i, 0);
123 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
131 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
132 if (g_date->Date() < d1) {
134 printf(
"Poly: %d\n", a_field->GetPoly());
135 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
137 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
139 g_msg->Warn(
"Next Crop ", (
double)almassnum);
143 if (g_date->Date() > d1) {
145 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): ",
"Crop start attempt after last possible start date");
146 g_msg->Warn(WARN_BUG,
"Previous Crop ",
"");
147 a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex());
149 g_msg->Warn(
"Next Crop ", (
double)almassnum);
168 d1 = g_date->OldDays() + g_date->DayInYear(20, 7);
185 if (!a_farm->
FP_Slurry(a_field, 0.0, g_date->DayInYear(5, 11) - g_date->DayInYear())) {
202 if (a_ev->
m_lock || a_farm->DoIt(40))
204 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(5, 11) - g_date->DayInYear())) {
219 if (a_ev->
m_lock || a_farm->DoIt(50))
221 if (!a_farm->StubblePlough(a_field, 0.0, g_date->DayInYear(5, 11) - g_date->DayInYear())) {
237 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->DayInYear(5, 11) - g_date->DayInYear())) {
244 if (a_ev->
m_lock || a_farm->DoIt(40))
246 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->Date() + 7 - g_date->DayInYear())) {
251 d1 = g_date->Date() + 1;
252 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 9)) {
253 d1 = g_date->OldDays() + g_date->DayInYear(10, 9);
255 if (a_farm->IsStockFarmer())
262 if (!a_farm->StubbleHarrowing(a_field, 0.0, g_date->DayInYear(10, 11) - g_date->DayInYear())) {
266 d1 = g_date->Date() + 1;
267 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 9)) {
268 d1 = g_date->OldDays() + g_date->DayInYear(10, 9);
270 if (a_farm->IsStockFarmer())
279 if ((a_ev->
m_lock || a_farm->DoIt(static_cast<int>((5.0 / 95.0) * 100))) && (
PL_SB_FERTI_P1 ==
false))
281 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
291 if ((a_ev->
m_lock || a_farm->DoIt(static_cast<int>((40.0 / 60.0) * 100))) && (
PL_SB_FERTI_S1 ==
false))
293 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
301 if (a_ev->
m_lock || a_farm->DoIt(28))
303 if (!a_farm->FP_NPKS(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
311 if (a_ev->
m_lock || a_farm->DoIt(28))
313 if (!a_farm->FA_NPKS(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
321 if (a_ev->
m_lock || a_farm->DoIt(30))
323 if (!a_farm->WinterPlough(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
328 if (a_farm->IsStockFarmer())
335 if (a_ev->
m_lock || a_farm->DoIt(23))
337 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
350 if (a_ev->
m_lock || a_farm->DoIt(23))
352 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
367 if (!a_farm->SpringHarrow(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
372 d1 = g_date->Date() + 1;
373 if (d1 < g_date->OldDays() + g_date->DayInYear(5, 3)) {
374 d1 = g_date->OldDays() + g_date->DayInYear(5, 3);
376 if (a_farm->IsStockFarmer())
383 if (a_ev->
m_lock || a_farm->DoIt(88))
385 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
394 if (a_ev->
m_lock || a_farm->DoIt(88))
396 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
407 if (!a_farm->HeavyCultivatorAggregate(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
412 d1 = g_date->Date() + 1;
413 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 3)) {
414 d1 = g_date->OldDays() + g_date->DayInYear(20, 3);
420 if (a_ev->
m_lock || a_farm->DoIt(20))
422 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
432 if (!a_farm->SpringSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
440 if (a_farm->IsStockFarmer())
445 if (a_farm->IsStockFarmer())
453 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
461 if (a_farm->IsStockFarmer())
466 if (a_farm->IsStockFarmer())
474 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
481 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
489 if (a_ev->
m_lock || a_farm->DoIt(43))
491 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
496 d1 = g_date->Date() + 14;
497 if (d1 < g_date->OldDays() + g_date->DayInYear(25, 5)) {
498 d1 = g_date->OldDays() + g_date->DayInYear(25, 5);
503 if (a_ev->
m_lock || a_farm->DoIt(43))
505 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
510 d1 = g_date->Date() + 14;
511 if (d1 < g_date->OldDays() + g_date->DayInYear(25, 5)) {
512 d1 = g_date->OldDays() + g_date->DayInYear(25, 5);
517 if (a_ev->
m_lock || a_farm->DoIt(3))
519 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
527 if (a_ev->
m_lock || a_farm->DoIt(3))
529 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
538 if (a_ev->
m_lock || a_farm->DoIt(97))
540 if (a_field->GetGreenBiomass() <= 0) {
545 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
555 if (a_ev->
m_lock || a_farm->DoIt(83))
557 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
565 if (a_ev->
m_lock || a_farm->DoIt(23))
567 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
572 d1 = g_date->Date() + 14;
573 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 5)) {
574 d1 = g_date->OldDays() + g_date->DayInYear(20, 5);
579 if (a_ev->
m_lock || a_farm->DoIt(4))
581 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
590 if (a_ev->
m_lock || a_farm->DoIt(65))
596 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
608 if (a_ev->
m_lock || a_farm->DoIt(46))
614 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
628 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
635 if (a_farm->IsStockFarmer())
638 if (a_ev->
m_lock || a_farm->DoIt(10))
640 if (a_field->GetMConstants(0) == 0) {
641 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
642 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): failure in 'StrawChopping' execution",
"");
647 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
666 if (a_ev->
m_lock || a_farm->DoIt(90))
668 if (a_field->GetMConstants(0) == 0) {
669 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
670 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): failure in 'StrawChopping' execution",
"");
675 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
692 if (a_field->GetMConstants(1) == 0) {
693 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
694 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): failure in 'HayBailing' execution",
"");
699 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1, 1) - g_date->DayInYear())) {
704 if (a_farm->IsStockFarmer())
711 if (a_ev->
m_lock || a_farm->DoIt(18))
713 if (a_field->GetMConstants(2) == 0) {
714 if (!a_farm->FP_RSM(a_field, 0.0, -1)) {
715 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): failure in 'FP_RSM' execution",
"");
720 if (!a_farm->FP_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
726 if (a_farm->IsStockFarmer())
733 if (a_ev->
m_lock || a_farm->DoIt(18))
735 if (a_field->GetMConstants(2) == 0) {
736 if (!a_farm->FA_RSM(a_field, 0.0, -1)) {
737 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): failure in 'FA_RSM' execution",
"");
742 if (!a_farm->FA_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
748 if (a_farm->IsStockFarmer())
755 if (a_ev->
m_lock || a_farm->DoIt(23))
757 if (a_field->GetMConstants(3) == 0) {
758 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
759 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): failure in 'FP_Calcium' execution",
"");
764 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
775 if (a_ev->
m_lock || a_farm->DoIt(23))
777 if (a_field->GetMConstants(3) == 0) {
778 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
779 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): failure in 'FA_Calcium' execution",
"");
784 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
795 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): "
796 "Unknown event type! ",
"");